2011-01-28 4 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을 구현합니다.Collection 인터페이스 Java

여기 내 질문입니다 : arrayList 클래스 (ArrayListDemo)에 의해 위에서 언급 한 인터페이스 (List, Cloneable, Serializable)에있는 모든 메서드를 구현할 필요가 없습니까?

+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가 어떤 클래스 (물론 Object)를 확장하거나 구현하지 않기 때문에 전혀 아닙니다. ArrayList는 지역 변수 유형으로 만 사용됩니다. 그리고 ArrayList가 완전 구현되었습니다.

+0

그는 그 주장을하지 않습니다. 그는 * "ArrayList extends AbstractList"라고 말하고 있습니다 * – aioobe