Skip to content

final关键字

final表示最终的

final修饰变量

  • 变量一旦被赋值后,就不能再修改。
java
final int MAX = 10;
MAX = 20; // ❌ 编译报错
  • final修饰的实例变量必须手动初始化

final 成员变量 可以延迟到构造器中初始化,而不一定在声明时就赋值。原因是 Java 允许每个对象在构造器里决定它的 final 属性值,但一旦构造完成,就不能再修改。

java
class Person {
    private final String name; // final成员变量,可以延迟初始化
    private final int age;

    // 构造器中初始化 final 变量
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void setName(String name) {
        // this.name = name; // ❌ 编译报错,final 变量不能被修改
    }
}

final修饰方法

  • 表示方法 不能被子类重写(override)

  • 常用于设计 不可变行为 的方法。

java
class Parent {
    public final void show() {
        System.out.println("该方法设计的非常优秀,你们别覆盖");
    }
}

class Child extends Parent {
    public void show() { // ❌ 编译报错
        System.out.println("尝试重写");
    }
}

final修饰类

  • 表示类 不能被继承

  • 常用于安全或工具类设计,比如 java.lang.String 就是 final 的。

java
public final class Utils {
    // 工具类
}

class SubUtils extends Utils { // ❌ 编译报错
}