2017-04-05 4 views
0

疑問は、メソッドの実装とインターフェイスを持つ単純なクラスの間にあります。抽象クラスではありません。リストクラスを作成し、すべてのメソッドの実装を行い、配列リストまたはリンクリストを作成して拡張するのはなぜですか?メソッドの実装は同じではありません。なぜクラスではなくインターフェイスが一覧表示されます

+4

他のリストの実装では、何も他のものが決して拡張されない可能性があります。 – QBrute

+0

@QBroute:わかりましたが、それは答えですが、コメントではありません。 –

+0

"抽象クラスではない"場合、すべてのメソッドの実装を提供する必要があります。どの実装を使用しますか?アレイによってバックアップされるArrayListのようなものかもしれません。しかしその場合、LinkedListのような他のリストをどのように作成しますか?その 'List'(実際にはArrayList)を拡張する必要がありますが、配列保持用のフィールドのような余分なものをすべて継承します。リストはより直感的です。 – Pshemo

答えて

7

いいえ、実装は同じではありません。リンクリストには、二重にリンクされたノードの集合が含まれており、高速挿入/削除用に最適化されています。配列リストは参照の配列によってサポートされており、ランダムアクセスに最適化されていますが、要素が追加および削除されるにつれ効率が低下します。

インターフェイスとしてListを定義すると、呼び出し元は内部の詳細にかかわらずリストベースのセマンティクスを適用できます。

1

Javaでは、多重継承はできません。したがって、クラスextendsが別のクラスであれば、他のクラスを拡張することはできません。 interfaceの実装は制限されていません。 1つのクラスを持つ複数のインターフェイスをimplementにすることができます。

関連する問題