ホームページ > Java > &#&チュートリアル > 複数のインターフェイスを実装する場合、Java はメソッド名の衝突をどのように処理しますか?

複数のインターフェイスを実装する場合、Java はメソッド名の衝突をどのように処理しますか?

Mary-Kate Olsen
リリース: 2024-11-30 19:13:11
オリジナル
601 人が閲覧しました

How Does Java Handle Method Name Collisions When Implementing Multiple Interfaces?

Java インターフェースの実装とメソッド名の衝突

Java で複数のインターフェースを実装する場合、メソッド名の衝突が発生する可能性があります。これは、異なる目的を持つインターフェイスが同じシグネチャを持つメソッドを定義している場合に発生します。明示的なインターフェイス実装により同じメソッドの複数の実装が許可される C# とは異なり、Java には同様のメカニズムがありません。

Java の制限の理由

Java では、次のメソッドの複数の実装が禁止されています。潜在的な曖昧さや混乱を防ぐために同じ方法を使用します。これにより、呼び出しインターフェイスに関係なく、メソッド呼び出しが常に同じ基になる実装を呼び出すことが保証されます。

次のコードを考えてみましょう:

interface ISomething {
    void doSomething();
}

interface ISomething2 {
    void doSomething();
}

class Impl implements ISomething, ISomething2 {
   void doSomething() {} // Java only allows one implementation of this method.
}
ログイン後にコピー

この例では、Impl クラスの doSomething() メソッドの 2 つの個別の実装をそれぞれに定義する方法はありません。

回避策

呼び出し側インターフェイスに基づいて個別の動作が必要な場合は、特定の実装を実装する個々のクラスに委任する複合クラスを作成することにより、合成アプローチの使用を検討してください。インターフェイス:

class CompositeClass {
    ISomething class1;
    ISomething2 class2;
    void doSomething1(){class1.doSomething();}
    void doSomething2(){class2.doSomething();}
}
ログイン後にコピー

このソリューションでは、CompositeClass は、別々のクラスに委任しながら両方のインターフェイスを実装するためのファサードを提供します。特定のメソッドの実装については。

以上が複数のインターフェイスを実装する場合、Java はメソッド名の衝突をどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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