Java深入解析final关键字
在Java中,final 关键字是一个用于声明属性、方法和类的不可变状态的修饰符。final 可以用于变量、方法和类,有助于提高代码的安全性和清晰度。接下来我们将详细探究 final 关键字的各种用途和它们背后的原理。
final 变量
当 final 修饰一个变量时,该变量就成了常量,意味着一旦被初始化后就不能再更改其值。对于基本类型的变量,它的数值不能被更改;对于引用类型的变量,它的引用不能被更改,但是对象本身是可以被修改的。
例子:
final int maxVolume = 100;
final List<String> list = new ArrayList<>();
list.add("Hello"); // 允许
// maxVolume = 101; // 编译错误,不能修改final变量的值
// list = new ArrayList<>(); // 编译错误,不能修改final变量的引用
final 方法
如果一个方法被声明为 final,则不能在子类中被覆盖(重写)。这通常是为了防止子类改变父类中的重要行为的目的,或者稳定类的功能。
例子:
public class Base {
public final void show() {
System.out.println("This is a final method.");
}
}
public class Derived extends Base {
// 下面的尝试将引发编译器错误
// public void show() {
// ...
// }
}
final 类
当类被声明为 final 时,它不能被继承。这是出于安全考虑,为了创建一个不可扩展的类,确保它的所有功能都保持不变,常见的例子是 String 类和各种包装类,如 Integer、Character 等。
例子:
public final class Utility {
public static void print() {
System.out.println("This is a utility class.");
}
}
// 下面的尝试将引发编译器错误
// public class ExtendedUtility extends Utility {
// ...
// }
浙公网安备 33010602011771号