啥是Final关键字

38 阅读1分钟

Final关键字的含义

final关键字在Java中用于表示"不可更改"的语义,具体作用取决于其修饰的对象

  1. 修饰类:被final修饰的类无法被继承(如String类),确保类的功能完整性。

  2. 修饰方法:禁止子类重写该方法,常用于锁定方法实现或提升性能(如Object类的getClass())。

  3. 修饰变量:变量成为常量,只能被赋值一次。包括三种类型:

    • 成员变量:必须在声明时或在所有构造方法中初始化

    • 局部变量:声明时必须赋值(如final int x = 10;

    • 方法参数:禁止在方法内修改参数值(如public void test(final int i)

构造方法中修改final变量的可行性

对于被final修饰的变量(如单例模式中的INSTANCE):

  1. 初始化允许:构造方法是唯一可以对未初始化的final成员变量赋值的地方。例如:

    public class Singleton {
        private static final Singleton INSTANCE;
        private Singleton() {
            INSTANCE = this; // 允许在构造方法中首次初始化
        }
    }
    
  2. 二次修改禁止:若INSTANCE已在声明时初始化(如private static final Singleton INSTANCE = new Singleton();),则构造方法中再次赋值会触发编译错误,因为final变量只能被赋值一次。