首頁 > Java > java教程 > 重寫後如何明確呼叫 Java 介面的預設方法?

重寫後如何明確呼叫 Java 介面的預設方法?

Barbara Streisand
發布: 2024-12-11 18:33:10
原創
757 人瀏覽過

How Can I Explicitly Call a Java Interface's Default Method After Overriding?

在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 中的afoo() 明確呼叫A.foo() 的預設實現,我們可以使用語法:

A.super.foo();
登入後複製

這種方法允許我們存取該方法的原始預設實現,即使它已被覆蓋或與其他預設實現存在衝突。

在更複雜的場景中,當多個介麵包含同名的預設方法時,我們可以使用相同的語法來選擇我們想要使用的特定預設實作:

public class ChildClass implements A, C {
    @Override
    public void foo() {
       // Override and do something else

       // Or manage conflicts
       A.super.foo();
       C.super.foo(); // Default implementation from C
    }

    public void bah() {
       A.super.foo(); // Default implementation from A
       C.super.foo(); // Default implementation from C
    }
}
登入後複製

透過明確地透過呼叫預設方法,我們可以控制介面的擴展方式、解決衝突並根據需要存取原始實現,而不會破壞重寫的契約。這為基於介面的設計提供了靈活性和客製化。

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板