final用于声明属性、方法和类,分别表示属性不可变、方法不可覆盖、类不可被继承
- final属性不可变
指引用不可变,只能指向初始化时指向的对象。因此被final修饰的变量必须被初始化。
初始化:
- 定义时初始化
- final成员变量可以在初始化块中初始化,但不可以在静态初始化块中初始化
- 静态final成员变量可以在静态初始化块中初始化
- 在类的构造器中初始化,但静态final成员变量不可以在构造方法中初始化。
- final方法
当一个方法被声明为final时,该方法不允许任何子类重写该方法,但子类可以使用该方法。 - final类
该类不能被继承,所有方法不能被重写,但是如果成员变量没有被final修饰,那么成员变量是可变的。
一个类不能同时被abstract和final修饰。