2017-02-07 5 views
4

に以下のコードはコンパイルされます。インタフェースの構文は、Java

interface A { 
    void foo(); 
} 

interface B extends A { 
    void bar(); 
} 

class FooBar implements A, B { 
    ... 
} 

ちょうどclass FooBar implements Bを言ってきれいだろう。そんなことをする明快さ以外の理由はありますか?あるいは、サンプルコードのパターンを表示すると、私は道に迷ってしまうかもしれません。

+2

いいえ、そうする理由はありません。どちらの例も同等です。 – Winter

+3

可読性の観点から、実装階層を確認するのは簡単ですが、コードを混乱させるので、必ずしもそうしたくはありません。あなたのコードからJavaDocsを生成した場合は、とにかく継承階層を見ることができます。私はちょうど 'B'を使い、別の理由がない限り' A'を心配する必要はありません。 – MadProgrammer

+0

Javadocのバグがありました20年前に継承された情報からの情報が印刷されなかった。 – EJP

答えて

2

コンパイラにとっては違いはありません。

人間の読者にとっては、コードを理解しやすくすることができます。あなたのインターフェイス名がAnimalMammalのときは、誰もが哺乳類が動物であることを知っているので、両方を宣言することは冗長です。しかし、インタフェースがあまり密接に関連していない場合(例えば、DataTransferObjectSerializable)、両方を明示的にリストすると便利です。

1

FooBarAを実装していることを明示的に宣言すると、この冗長性について警告するために最新のIDEを設定することはできません。

それはBは、このような方法で、FooBarが理解し、それが少し容易にするかもしれないが、少なからずそれはちょうどあなたがBAとの間の関係を再考する必要があることを意味宣言し、Aを拡張名から明白でなければ。