溫馨提示×

如何正確使用java finnal

小樊
81
2024-09-25 19:02:32
欄目: 編程語言

在Java中,final關鍵字用于限制類、方法或變量的行為

  1. 用于類:當一個類被聲明為final時,表示該類不能被繼承。這通常用于保護類的設計,確保不會被其它類覆蓋。
public final class MyFinalClass {
    // 類的實現(xiàn)
}
  1. 用于方法:當方法聲明為final時,表示該方法不能被子類覆蓋(即子類不能重新實現(xiàn)這個方法)。這有助于確保方法的行為在整個類繼承體系中保持一致,子類不能對其進行修改。
public class MyBaseClass {
    public final void myFinalMethod() {
        // 方法的實現(xiàn)
    }
}
  1. 用于變量

    • 當聲明基本數(shù)據(jù)類型的變量時,final意味著該變量是一個常量,其值在初始化后不能被改變。
    java`public class MyClass {
        public final int MY_CONSTANT = 10;
        // 類的其它部分
    }`
    * 當聲明引用類型的變量時,`final`意味著該變量的引用不能指向其它對象,但引用的對象的內容仍然可以改變。
    
    
    

    javapublic class MyClass { public final MyOtherClass myFinalObject = new MyOtherClass(); // 類的其它部分 }

  2. 注意事項

    • final變量必須在聲明時或構造函數(shù)中被初始化,因為它們不能被重新賦值。
    • 如果final變量是類的成員變量,并且類有一個可訪問的構造函數(shù),那么final變量必須在構造函數(shù)中被初始化。
    • final方法不能被子類覆蓋,但子類可以繼承其實現(xiàn)。
  3. 使用場景

    • 當你希望確保某個類不被繼承時,可以使用final關鍵字。
    • 當你希望確保某個方法的行為在整個類繼承體系中保持一致,并且不希望子類對其進行修改時,可以使用final關鍵字。
    • 當你希望定義一個常量時,可以使用final關鍵字(對于基本數(shù)據(jù)類型)或將其引用設置為final(對于引用類型)。
  4. 示例

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

0