在Java中,final
关键字用于限制类、方法或变量的行为
final
时,表示该类不能被继承。这通常用于保护类的设计,确保不会被其它类覆盖。public final class MyFinalClass {
// 类的实现
}
final
时,表示该方法不能被子类覆盖(即子类不能重新实现这个方法)。这有助于确保方法的行为在整个类继承体系中保持一致,子类不能对其进行修改。public class MyBaseClass {
public final void myFinalMethod() {
// 方法的实现
}
}
用于变量:
final
意味着该变量是一个常量,其值在初始化后不能被改变。java`public class MyClass {
public final int MY_CONSTANT = 10;
// 类的其它部分
}`
* 当声明引用类型的变量时,`final`意味着该变量的引用不能指向其它对象,但引用的对象的内容仍然可以改变。
javapublic class MyClass { public final MyOtherClass myFinalObject = new MyOtherClass(); // 类的其它部分 }
注意事项:
final
变量必须在声明时或构造函数中被初始化,因为它们不能被重新赋值。final
变量是类的成员变量,并且类有一个可访问的构造函数,那么final
变量必须在构造函数中被初始化。final
方法不能被子类覆盖,但子类可以继承其实现。使用场景:
final
关键字。final
关键字。final
关键字(对于基本数据类型)或将其引用设置为final
(对于引用类型)。示例:
public class MyClass {
public final int CONSTANT = 100;
public final void myFinalMethod() {
System.out.println("This is a final method.");
}
public static void main(String[] args) {
MyClass obj = new MyClass();
System.out.println(obj.CONSTANT); // 输出 100
// obj.CONSTANT = 200; // 编译错误,因为 CONSTANT 是 final 的
obj.myFinalMethod(); // 输出 "This is a final method."
// obj.myFinalMethod = () -> System.out.println("I am not a final method."); // 编译错误,因为 myFinalMethod 是 final 的
}
}
在这个示例中,CONSTANT
变量和myFinalMethod
方法都被声明为final
,因此它们的行为不能被修改。