ホームページ > Java > &#&チュートリアル > デフォルトのメソッドの実装がクラスでオーバーライドされるときに、Java で明示的に呼び出すにはどうすればよいでしょうか?

デフォルトのメソッドの実装がクラスでオーバーライドされるときに、Java で明示的に呼び出すにはどうすればよいでしょうか?

Mary-Kate Olsen
リリース: 2024-11-16 04:34:03
オリジナル
673 人が閲覧しました

How do you invoke a default method's implementation explicitly in Java when it's overridden in a class?

Java でのデフォルト メソッドの明示的な呼び出し

Java 8 では、既存の実装を壊すことなくインターフェイスを拡張する方法としてデフォルト メソッドが導入されました。しかし、メソッドのデフォルト実装がオーバーライドされている場合、または他のデフォルト実装と競合している場合、どのようにしてメソッドを呼び出すことができますか?

提供されたコードでは、foo() メソッドが A インターフェイスのデフォルト メソッドとして定義され、オーバーライドされています。 Bクラスで。 B クラスの A.foo() のデフォルト実装にアクセスするには、次の構文を使用できます。

A.super.foo();
ログイン後にコピー

これにより、デフォルトの実装がオーバーライドされていても呼び出すことができます。 A.super 参照は、B クラス オブジェクトではなく、A インターフェイス タイプを参照することに注意することが重要です。

public class ChildClass implements A, C {
    @Override
    public void foo() {
        // Override the default implementation
        System.out.println("ChildClass.foo()");
    }

    public void callDefault() {
        // Invoke the A.foo() default implementation
        A.super.foo();
        // Invoke the C.foo() default implementation
        C.super.foo();
    }
}
ログイン後にコピー

この例では、ChildClass は A インターフェイスと C インターフェイスの両方を実装し、それぞれ独自のインターフェイスを持っています。デフォルトの foo() メソッド。 A.super.foo() と C.super.foo() を使用すると、デフォルトの実装に明示的にアクセスでき、特定の動作や競合解決が可能になります。

以上がデフォルトのメソッドの実装がクラスでオーバーライドされるときに、Java で明示的に呼び出すにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート