オーバーライドまたは競合している場合に Java でデフォルトのメソッドを呼び出す方法

Patricia Arquette
リリース: 2024-11-17 18:36:02
オリジナル
843 人が閲覧しました

How to Call Default Methods in Java When Overridden or Conflicting?

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

質問:

デフォルト メソッドを呼び出すことは可能ですか?メソッドがオーバーライドされた場合、または複数のインターフェイスの実装と競合した場合のメソッドの実装はどうなっていますか?次のコードを考えてみましょう:

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?
    }
}
ログイン後にコピー

答え:

デフォルトのメソッド A.foo() は、構文 A.super.foo() を使用して明示的に呼び出すことができます。 。この構文を使用すると、メソッドがオーバーライドされているか、競合により使用できない場合でも、メソッドの元の実装にアクセスできます。

例:

A を呼び出す場合。クラス B のメソッド afoo() の foo() を使用すると、次のように使用できます。コード:

public void afoo() {
    A.super.foo();
}
ログイン後にコピー

追加の使用法:

スーパー構文は、他のインターフェイスからデフォルトのメソッドにアクセスするために使用することもできます。たとえば、インターフェイス C にもデフォルトのメソッド foo() がある場合、次のようにクラス B の両方の実装にアクセスできます。

public void bah() {
    A.super.foo(); // Original `foo()` from interface `A`
    C.super.foo(); // Original `foo()` from interface `C`
}
ログイン後にコピー

スーパー構文を使用すると、どのデフォルトの実装を呼び出すかを選択できます。または、独自のメソッドで複数の実装を組み合わせます。

以上がオーバーライドまたは競合している場合に Java でデフォルトのメソッドを呼び出す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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