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 { // ❌ 编译报错
}