147

インターフェイスはJavaで複数のインターフェイスを拡張できますか? このコードは私の IDE で有効に見え、コンパイルされます。

interface Foo extends Runnable, Set, Comparator<String> { }

しかし、Java では多重継承が許可されていないと聞いていました。インターフェイスに例外があるように見えるのはなぜですか?

4

7 に答える 7

197

はい、できます。次に示すように、インターフェイスは複数のインターフェイスを拡張できます。

interface Maininterface extends inter1, inter2, inter3 {  
  // methods
}

1 つのクラスで複数のインターフェイスを実装することもできます。2 つのインターフェースが同じ名前と署名を定義するメソッドを持っている場合はどうなるでしょうか?

トリッキーな点があります:

interface A {
    void test();
}

interface B {
    void test();
}

class C implements A, B {

    @Override
    public void test() {

    }     

}

次に、単一の実装が両方で機能します:)。

ここで私の完全な投稿を読んでください:

http://codeinventions.blogspot.com/2014/07/can-interface-extend-multiple.html

于 2013-10-23T15:47:06.997 に答える
80

インターフェースは、複数のインターフェースを拡張できます

クラス複数のインターフェースを実装できます。

ただし、クラスは 1 つのクラスしか拡張できません。

とについて話すときは、extendsとという言葉の使い方に注意してください。implementsinterfaceclass

于 2013-10-23T15:49:06.883 に答える
9

インターフェイスはJavaで複数のインターフェイスを拡張できますか?

答えは:はい。

JLSによると

インターフェイスは、1 つまたは複数の他のインターフェイスの直接拡張として宣言できます。つまり、非表示にする可能性のあるメンバー型と定数を除いて、それが拡張するインターフェイスのすべてのメンバー型、抽象メソッド、および定数を暗黙的に指定します。

于 2013-10-23T15:46:42.007 に答える
4

複数に拡張することはできますが、複数に拡張するInterfacesことはできませんclasses

Java で複数のクラスを拡張することができない理由は、これが可能である C++ からの悪い経験です。

複数の継承の代替手段は、クラスが複数のインターフェースを実装できる (またはインターフェースが複数のインターフェースを拡張できる) ことです。

于 2013-10-23T15:49:17.013 に答える