java关键字
abstract:
1、修饰类或方法,能被继承,不能被实例化。
2、抽象方法不在声明它的方法中实现。
3、抽象方法必须在抽象类中,抽象类里可以不是抽象方法。
4、抽象类的子类没有实现它的所以方法,那么这个子类依旧是抽象类
5、不能与static,private,final公用。
6、可以声明抽象类的引用(多态中)
static:
1、static方法就是没有this的方法
2、static修饰的方法,内部不能调用非静态方法或变量,但是静态方法可以再没有创建对象的情况下使用
3、静态变量,是被所以对象共享,内存中只有一个副本,当且仅当类初次加载时才会被初始化。且初始化顺序按照定义的顺序进行初始化。
4、静态代码块在类初次加载时加载,切按照顺序加载。
例题:public class Main {
static int value = 33;
public static void main(String[] args) throws Exception{
new Main().printValue();
}
private void printValue(){
int value = 3;
System.out.println(this.value);
}
}
注:new Main()是对象,this.value无意就是33,因为static对所有对象享有,切这里的value是局部变量,和对象没关系。
final
1、可修饰类,方法,变量
2、final修饰变量,就是变量值不会被修改;修饰方法,就表示不可被继承的子类重新;修饰类,表示不能被继承。
3、final提高了性能,JVM和Java都会缓存final变量,而且在多线程下共享安全,不需要额外开销。
4、final成员变量赋值的时候初始化,或者在构造器中初始化,否则编译报错。
this和super
1、super(参数):调用基类的某个构造函数,且应该是此构造函数的第一句
2、this(参数):调用本类的另一种形式参数的构造函数,且应该为此构造函数的第一句
3、super.参数,super.成员函数名(参数),访问父类的成员
4、this.参数,this.成员函数名(参数),当前对象名
5、每一个构造会隐式调用super()构造,所以this()和其不能同用