2017-01-11 8 views
1

私は具体的なクラスが何かを理解するのに苦労しています。使用して、それに追加し空の "public class xList <E>はArrayListを拡張します<E>"は具体的ですか?

xList list = new xList();

と::

を私が使用して別のクラスで

public class xList<E> extends ArrayList<E> { 

} 

とmainメソッドを使用して:

現在、私は空のようにクラスを持っています

list.add("example");

私は何ですかArrayListを継承して具体的なものとして私のクラス図を満足させるxListクラスを作成することです。 xListクラスを使って私は学生のリストを作ることができます(学生クラスのオブジェクトのリストを持っています)。学生クラスは、セッターとゲッターとIDと名前で構成されています。

私の考え方は正しいのですか、間違ったルートを下っていますか?

+3

私はいつも "具体的な"クラスは、インターフェイスまたはabtractクラスの実装と呼ばれると聞いてきました。 'ArrayList'自体は既にそのロジックによって具象クラスになっています –

+0

クラス名 'xList'はJava規約と一致し、 'XList'と呼ばれるべきです。オーバーライドしようとしているArrayListの主な動作は何ですか?多分、AbstractListと具象ArrayListの違いを概説したこのhttp://stackoverflow.com/questions/18395005/why-linkedlist-and-arraylist-extends-abstractlist-in-javaの回答を見てください。私はArrayListから拡張するのではなく、studentClassList変数としてListオブジェクトをカプセル化する必要があります。 – emeraldjava

+1

'List 'の全体のポイントは、作成時にタイプを指定できることです。 'List students = new ArrayList <>();' – Powerlord

答えて

1

抽象で​​ないクラスはすべて具体的です。

しかし、ArrayListやその他の具体的なコレクションクラスを拡張することは、通常は最適ではありません。 ArrayListを使用するのではなく、xListクラスを作成するのはなぜですか?

+1

まあ、私は 'ArrayList'を拡張する問題は見ません。 [この記事を参照](http://stackoverflow.com/questions/5306887/should-i-extend-an-arraylist-is-a-or-should-i-include-it-as-a-member-has- a)。 –

+0

@MCEmperorその投稿は構成対相続について議論しています。いずれも必要ありませんが、ArrayListはそのまま使用できます。 –

+0

'ArrayList'を拡張する理由があるかもしれませんが、通常は必ずしも必要ではありません。この答えは" concrete class "という用語を説明しています。 –

関連する問題