3

この構造が Eclipse でエラー/警告を生成するのはなぜですか? レポートが生成される理由は理解していますが、これらの冗長なスーパーインターフェイスを詳しく説明すると、何がうまくいかないのか、何らかの理論的根拠があるに違いないと思います。

例:

interface I1{
    void boo();
}


class A implements I1 {
    public void boo() {}
}


class B extends A implements I1 {
    public void boo() {}
}

警告は B の実装 I1の近くにあります。

4

2 に答える 2

3

これは単なる警告であり、2 つの理由があると思います。

  • これは冗長であるため、削除できます。ノイズが少ないほど良いです。でもこれはスタイルの問題
  • B ではインターフェイス メソッドを実装する必要がないことがわかります。インターフェイス メソッドは既に A で実装されているためです。したがって、インターフェイス メソッドを実装すると、インターフェイスが実装されるだけでなく、スーパークラスのデフォルトの実装がオーバーライドされます。 .
于 2012-10-18T11:05:08.707 に答える
3

Aクラスが実装I1し、クラスBが拡張する場合のイメージングA。でメソッドを実装する必要はありませんが、デフォルトでは がB実装されています。implementに変更した場合でも、コンパイルされます。I1I1AI2B

ただし、メソッドがB明示的にimplements I1提供されていない場合、この変更によりBコンパイルが行われなくなります。

もちろん、私は のユーザーがを実装Bすると仮定している可能性があるという問題を無視しています。この場合、それは問題ではないと仮定しましょう。BI1

于 2012-10-18T11:01:18.333 に答える