首頁  >  文章  >  Java  >  如何在 Java 中明確呼叫預設方法?

如何在 Java 中明確呼叫預設方法?

Barbara Streisand
Barbara Streisand原創
2024-11-25 00:06:23311瀏覽

How to Explicitly Call Default Methods in Java?

在 Java 中明確調用預設方法

Java 8 引入了預設方法來擴展接口,而無需修改現有實現。然而,開發者可能會遇到需要明確呼叫預設實現的場景,例如某個方法被重寫或與各個介面中的多個預設實作發生衝突時。

考慮以下範例:

interface A {
    default void foo() {
        System.out.println("A.foo");
    }
}

class B implements A {
    @Override
    public void foo() {
        System.out.println("B.foo");
    }
    public void afoo() {
        // how to invoke A.foo() here?
    }
}

要從類別B 中明確呼叫A.foo(),請使用下列語法:

A.super.foo();

此語法允許您指定確切的要呼叫的預設實現,解決潛在的衝突或壓倒一切的問題。在上面的範例中,afoo() 可以如下實現:

public void afoo() {
    A.super.foo();
}

afoo() 中的程式碼現在將從介面A 呼叫foo() 的預設實現,即使它已在class B.

此外,如果多個介面定義了同名的預設方法,則可以使用相同的語法來選擇要呼叫的具體實作。例如,如果 C 是具有預設 foo() 方法的另一個接口,則可以使用以下程式碼:

public class ChildClass implements A, C {
    @Override    
    public void foo() {
       A.super.foo();
       C.super.foo();
    }
}

此方法允許靈活地控制在類別中使用哪些預設實作。透過明確呼叫預設方法,您可以解決衝突並利用 Java 8 預設方法提供的擴充功能,而無需修改現有的介面定義。

以上是如何在 Java 中明確呼叫預設方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn