有些关键字在之前的内容已经提到过,这里做一个总结
一、final、static、abstract
1.static 修饰符
被 static 关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。
- static 作用于代码块:称作静态代码块
- static 方法(类方法)只能访问 static 方法,不能访问非 static 方法
- static 方法只能访问 static field, 不能访问非 static field
- static方法不能访问本类中的非static变量
- 非 static 方法可以访问 static fields 和 static methods
- static method 的两种访问方式 oject.method 和 class.method, 非 static method 只有 object.method 一种访问方式
- static method 中不支持 this 和 super
- static 不可以作为局部变量(局部变量包括:函数级局部变量和块级局部变量)
- static属性放在静态空间,不会在程序运行时被释放,它永远占着内存直到程序终止,这也是static不能修饰局部变量的原因。
2.final 修饰符
- final 类不能被继承(final 类内的 method 自动为 final,但不包括属性)
- final 方法可以被继承但不能被 override
- final 属性不能被重新赋值(可以被继承,但不可以修改)定义时可以初始化,也可以不初始化,而在语句块中初始化或者构造函数中初始化(最晚要在构造函数中初始化,只能初始化一次),final 定义的成员变量可以在代码块 (类变量则静态代码块,实例变量普通代码块) 里初始化
- final 属性只能人为赋值一次,继承与父类的 final