final关键字
final
关键字是一个修饰符,它可以用来修饰类、方法和变量。
-
final 类:当一个类被声明为
final
时,它不能被其他类继承。这意味着这个类是封闭的,不能有任何子类。public final class UtilityClass { // 类成员 }
-
final 方法:将方法声明为
final
可以防止子类重写该方法。这通常用于定义一个类中不应该被改变的行为。public class Parent { public final void show() { System.out.println("This method cannot be overridden"); } }
-
final 变量:对于基本数据类型的变量,声明为
final
意味着一旦给变量赋值后,就不能被重新赋值。对于引用类型的变量,final
只能保证引用本身不可变,但是被引用的对象的内容是可以改变的,除非对象本身是不可变的。public class Test { public final int value = 10; // 不能重新赋值 public final Object obj = new Object(); // 可以改变 obj 引用的对象的内容 }
-
final 参数:将方法参数声明为
final
可以防止方法内部修改参数的值。这有助于确保方法不会改变传入的参数。public void process(final int number) { // 方法内部不能给 number 赋新值 }
-
匿名内部类和局部类中的构造函数:在使用匿名内部类或局部类时,构造函数是
final
的,不能被子类重写。 -
final 在多态中的应用:当使用多态调用方法时,如果子类重写了父类的方法,并且该方法在父类中被声明为
final
,则子类中的方法调用将使用父类的实现。 -
final 在 Java 8 及以后版本中的局部变量:从Java 8开始,可以在方法中使用
final
声明的局部变量,这些变量可以被赋值一次后修改。public void updateValue(int initialValue) { final int value = initialValue; value += 5; // 合法,可以修改 final 局部变量的值 }