Final关键字的含义
final关键字在Java中用于表示"不可更改"的语义,具体作用取决于其修饰的对象
-
修饰类:被
final修饰的类无法被继承(如String类),确保类的功能完整性。 -
修饰方法:禁止子类重写该方法,常用于锁定方法实现或提升性能(如Object类的
getClass())。 -
修饰变量:变量成为常量,只能被赋值一次。包括三种类型:
-
成员变量:必须在声明时或在所有构造方法中初始化
-
局部变量:声明时必须赋值(如
final int x = 10;) -
方法参数:禁止在方法内修改参数值(如
public void test(final int i))
-
构造方法中修改final变量的可行性
对于被final修饰的变量(如单例模式中的INSTANCE):
-
初始化允许:构造方法是唯一可以对未初始化的
final成员变量赋值的地方。例如:public class Singleton { private static final Singleton INSTANCE; private Singleton() { INSTANCE = this; // 允许在构造方法中首次初始化 } } -
二次修改禁止:若
INSTANCE已在声明时初始化(如private static final Singleton INSTANCE = new Singleton();),则构造方法中再次赋值会触发编译错误,因为final变量只能被赋值一次。