一 static
修饰属性、方法、块、内部类
static被称为静态,可以用来修饰类的属性或者方法。
static属性可以使用对象调用,也可以直接用类名调用。 例如:
public class ssss {
String name;
double salary;
static int count=1;
private int c=1;
public ssss(String name,double salary){
this.name=name;
this.salary=salary;
count++;
c++;
}
public static void main(String[] args){
ssss a1=new ssss("b1 ",3000);
ssss a2=new ssss("b2 ",6000);
System.out.println(a1.name+""+a1.salary+""+a1.count);
System.out.println(a2.name+""+a2.salary+""+a2.count);
System.out.println(a1.name+""+a1.salary+""+a1.c);
System.out.println(a2.name+""+a2.salary+""+a2.c);
}
}
也就是说,static修饰符是所修饰的变量是一个内存空间的值,而被private修饰的指的是每次初始化的值。
属性可以使用static修饰,局部变量不可以。
二 final
用于声明属性,方法和类
属性:定义就必须直接赋值或者在构造方法中进行赋值,并且后期都不能修改。
方法:定义必须有实现代码,并且子类里不可被覆盖。
类:不能被定义为抽象类或是接口,不可被继承。
final修饰属性:
当final修饰属性时,基本数据类型的属性将成为常量,不能被修改
在方法参数前面加final关键字,为了防止数据在方法体中被修改。
三 继承
继承是指一个类的定义可以基于另外一个已经存在的类,即子类基于父类,从而实现父类代码的重用,子类能吸收已有类的数据属性和行为,并能扩展新的能力。
继承的形式:
【访问权限修饰符】【修饰符】子类名 extends 父类名{子类体}
继承的作用:代码复用
继承中构造方法的调用
1.默认情况下,调用父类无参构造方法
2.可以在子类构造方法的第一行,使用super关键字调用父类任意一个构造方法
注意:必须将调用父类构造方法的这条语句放在子类构造方法的第一条语句位置。
方法覆盖的定义
子类可以重写父类中某一个方法,称为方法覆盖,也称方法重写,是继承中非常重要的知识点。如果子类需要修改从父类继承到的方法的方法体,就可以使用方法覆盖。
方法覆盖的原则
同名
同参
同返回值
访问权限不能缩小
四 super
与this的区别,this通常指代当前对象,super通常指代父类。
例如:
class aaa {
protected void sss(){
System.out.println("这是一只猫");
}
}
class aaa2 extends aaa{
public aaa2(){
super(); //调用父类的构造方法,而且放第一行,如果不写,系统自动加
}
public void sss(){
System.out.println("这是一只大花猫");
super.sss(); //调用父类的方法
}
}
public class hhh {
public static void main(String[] args) {
aaa2 z = new aaa2();
z.sss();
}
}