Java LinkedHashMap为什么要实现Map接口?
ringa_lee
ringa_lee 2017-04-18 09:30:41
0
3
971

HashMap已经实现了Map接口,LinkedHashMap既然继承了HashMap,为什么还要implements一遍,是为了保留自己跟父类HashMap中Map方法不一样的可能性吗?如果是,那为什么不直接重写,还要再继承呢?

附:LinkedHashMap源代码

public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V> {
/*
省略内部代码
*/
}
ringa_lee
ringa_lee

ringa_lee

全員に返信(3)
刘奇

JDKのCollectionソースコードにはこのような書き方がたくさんあります。
実際、この書き方には副作用がないことを認めなければなりません。
しかし、この方法で記述することには利点があります。LinkedHashMap のソース コードを個別に開くと、どのクラスが継承され、どのインターフェイスが実装されているかがわかります。言い換えれば、HashMapLinkedHashMap を実装していることを知るために Map のソース コードをクリックする必要はありません。つまり、特にクラス間の継承関係が非常に複雑な場合、継承関係について心配する必要はありません。

この は人道的な考慮事項に基づいています。たとえば、
インターフェースはインターフェースを継承しますが、サブインターフェースは で明示的に宣言されます。すべてのメソッドを作成し、このメソッドが親インターフェイスから継承され、自分で定義したインターフェイスとは何の関係もないことを明示的に示すために、アノテーション @Override を追加します。

いいねを押す +0
左手右手慢动作

実際、これは単なる Java 開発者の習慣かもしれません。
通常、要件には特定のクラスがどのインターフェースを実装する必要があるかが記載されていますが、実際には、これらのインターフェースの相互依存関係をわざわざ見つけて重複プロジェクトを削除すると、プロセスが煩雑になり、これらの重複がまた、コンパイル時に自動的に処理されます。したがって、これらの人々は実装が必要なクラスを直接作成し、手動による重複排除の手間を省きます。

いいねを押す +0
洪涛

ソース コードを見ると、クラスの定義のみが表示されますが、この理由については詳しく調べられていません。 Java では単一の継承があることがわかっていますが、継承できるクラスは 1 つだけですが、複数の異なるインターフェイスを実装できます。

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!