在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
,因此它們的行為不能被修改。