final关键字
final关键字
final基本使用
- final修饰类,这个类就不能被继承
- final修饰方法,这个方法就不能被子类重写
- final修饰变量,不能够被修改
常量
被final修饰的变量叫常量,一般命名是大写下划线隔开 XX_XX这种形式
普通常量的初始化有三个地方
- 直接定义初始化:
final int PI = 3.14;
- 构造器中初始化
final int PI;
public A (){
PI = 3.14;
}
- 代码快中初始化
final int PI;
{
PI = 3.14;
};
常量初始化就一次,如果在定义中赋值,就不能在构造器或代码块中再次赋值了
关于静态常量初始化仅两个地方
- 定义
- 静态代码块
静态常量随着类的加载而加载完毕,如果在构造器中赋值,那么会有这样一种情况,没有创建对象,导致构造器没有被调用,从而常量没有被赋值,直接编译不通过。
final类
final类不可以被继承,但是可以实例化对象
final方法
不是final类,含有final方法,虽然该方法不能够被子类重写,但仍然可以被子类继承
final使用细节
-
一般讲,final修饰的类,其中的方法不必被final修饰
-
final不能修饰构造器
-
final和static共同使用,效率会更高,比如public final static int n;
调用这个n的时候,不会加载类,直接调用变量n
-
包装类(Integer String Boolean Float等)都是final类