final用于修饰类、方法和变量,表示不可继承、不可重写、不可修改。修饰类时防止被继承,如String类;修饰方法时防止被子类重写,保护核心逻辑;修饰变量时确保值或引用一旦赋值不可更改,常用于定义常量,提升代码安全性与稳定性。

在Java中,final 是一个修饰符,可以用来修饰类、方法和变量,每种用法都有不同的含义和作用。
final修饰类
当一个类被 final 修饰时,表示这个类不能被继承。也就是说,其他类无法通过 extends 关键字来扩展这个类。
例如:
public final class MathUtils {// 类内容
}
// 下面这行代码会编译错误
// class MyMath extends MathUtils { } // 错误:不能继承 final 类
典型例子是 Java 中的 String 类,它是 final 的,确保其行为不会被篡改,增强安全性和稳定性。
立即学习“Java免费学习笔记(深入)”;
final修饰方法
当一个方法被 final 修饰时,表示该方法不能被子类重写(override)。
这样做可以防止子类改变方法的行为,保护核心逻辑。
例如:
class Parent {public final void display() {
System.out.println("This method cannot be overridden");
}
}
class Child extends Parent {
// 下面这行会编译错误
// public void display() { } // 错误:不能重写 final 方法
}
注意:final 方法仍然可以被继承,只是不能被重写。
final修饰变量
当一个变量被 final 修饰时,表示它的值一旦赋值后就不能再修改。
- 对于基本类型,值不能变(如 int、boolean 等)。
- 对于引用类型,引用地址不能变,但对象内部的状态可以变。
例如:
final int x = 10;// x = 20; // 编译错误:不能重新赋值
final List
list.add("hello"); // 合法:对象内容可以修改
// list = new ArrayList(); // 错误:引用不能重新指向新对象
final 变量通常用于定义常量,尤其是在配合 static 使用时:
public static final double PI = 3.14159;基本上就这些。final 的核心作用就是“不可变”或“不可扩展”,根据修饰目标不同,具体表现也不同。理解清楚有助于写出更安全、稳定的代码。










