匿名內部類理解

充满希望与信心發表於2024-04-10

匿名內部類是 Java 中的一種內部類(定義在另一個類中的類),它沒有名稱。它們通常用於實現介面或擴充套件類的簡單版本,而無需顯式宣告一個獨立的類。匿名內部類特別適合於建立那些僅用一次的類例項。

特點:
無名稱:匿名內部類沒有名稱,建立時直接透過 new 關鍵字後跟介面或類名來定義。
一次性使用:它們通常用於實現只需要一次使用的類——例如,在作為引數傳遞時或在方法內部建立時。
簡潔的語法:它們允許你在需要例項化物件的地方快速實現一個介面或類,無需建立一個實際的類定義。
訪問外部類的成員:匿名內部類可以訪問其外部類的成員變數和方法。

假設我們有一個簡單的介面 Greeting:
interface Greeting { void sayHello(); }
我們可以使用匿名內部類來實現這個介面,而不是建立一個實現了 Greeting 介面的命名類:

點選檢視程式碼
public class Test {
    public static void main(String[] args) {
        // 使用匿名內部類實現 Greeting 介面
        Greeting greeting = new Greeting() {
            @Override
            public void sayHello() {
                System.out.println("Hello, World!");
            }
        };

        greeting.sayHello();  // 輸出:Hello, World!
    }
}

在這個例子中,我們在 Greeting 介面後面使用了 {} 來提供 Greeting 介面的匿名實現,並覆蓋了 sayHello 方法。這個匿名內部類的例項被建立並賦值給 greeting 變數。然後我們透過這個變數呼叫了 sayHello 方法。

匿名內部類提供了一種快速實現介面或擴充套件類的方法,尤其是當這種實現只需要在程式中一處使用時。這使得程式碼更加緊湊,但也可能犧牲了程式碼的可讀性,特別是當實現變得複雜時。

相關文章