2011-01-28 3 views
0
import java.util.*; 

public class ArrayListDemo{ 
    public static void main(String[] args) { 
    ArrayList<Object> arl=new ArrayList<Object>(); 
    Integer i1=new Integer(10); 
    Integer i2=new Integer(20); 
    Integer i3=new Integer(30); 
    Integer i4=new Integer(40); 

arl.add(i1); 
arl.add(i2); 
arl.add(s1); 
System.out.println("The content of arraylist is: " + arl); 
System.out.println("The size of an arraylist is: " + arl.size()); 

ここには単純なarrayListプログラムがあります。 ArrayListはAbstractListを拡張し、List、Cloneable、Serializableを実装しています。コレクションインタフェースJava

ここで私の質問です:上記のインターフェイス(List、Cloneable、Serializable)にあるすべてのメソッドをarrayListクラス(ArrayListDemo)で実装する必要はありませんか?

+0

あなたのケースでは、クラスやインターフェイスをまったく拡張または実装しないため、ArrayListDemoに何も実装する必要はありません。しかし、おそらくあなたの質問が間違っている、それを明確にしてください。 –

+0

抽象サブクラスまたは実装をオーバーライドする場合は、すべてのメソッドまたはすべてのメソッドをオーバーライドする必要はありません。 –

+0

それ以外は*必要です。 – EJP

答えて

3

あなたのクラスがすでにそれらのメソッドを提供している別のクラスを拡張していない場合、またはあなたのクラスが抽象クラスである場合を除きます。たとえば:あなたはすべてのメソッドを実装する必要があります

class C implements Collection {...} 

ようなもので

interface Foo { 
    void bar(); 
    void baz(); 
} 

class Superclass { 
    public void bar() {} 
} 

class Subclass extends Superclass implements Foo { 
    // We need to implement baz, but bar is okay already 
    @Override public void baz() {} 
} 

abstract class AbstractClass implements Foo { 
    // No need to do anything... a subclass will need 
    // to implement both bar and baz though 
} 
3

、あなたがしようとしたのですか?

class C extends AbstractCollection {...} 

を使用して、さまざまな方法を実装できます。

0

あなたの実装が部分的なもの(abstract class)でない限りです。その後、残りのインタフェースメソッドは、抽象クラスを継承する(具象)クラスによって実装されなければなりません。最後に

すべてインターフェイスのメソッド必要実装、そうでない場合は、コンパイラは文句を言うでしょう。

2

ArrayListは、まだAbstractListに存在しない方法を実装すればよい。メソッドが利用できる限り、ArrayListから来たものであってもスーパークラスのものであっても構いません。

あなたが "arrayList class(ArrayListDemo)"によって何を意味するのかは分かりません。 ArrayListDemo自体はインターフェイスを実装しないか、ArrayListを拡張します。

3

ArraylistDemoarraylistがありません。 ArrayListは既にこれらのインターフェイスを実装しているので、自分で行う必要はありません。

+0

彼はそれを主張していません。彼は* "ArrayList extends AbstractList" * – aioobe

+0

と言っていますが、実装したクラスではありません(http://download.oracle.com/javase/1.4.2/docs/api/java/util/ArrayList.html)。 )。最後の文は理解するのが難しいですが、 "arraylistdemo"が括弧内にあるという事実は、私が彼がそこにそれらを実装したいと思ったという事実です。したがって、これらの関数はすべてがアーリーライストなので、HISクラスでこれらの関数を実装する必要はありません。 – Nanne

1

ArrayListDemoはどのクラス(オブジェクトももちろん)を拡張または実装しないため、まったくありません。 ArrayListはローカル変数型としてのみ使用されます。 ArrayListは完全実装されています。

+0

彼はそれを主張していない。彼は* "ArrayList extends AbstractList"と言っている* – aioobe

関連する問題