2017-10-31 9 views
0

지금 당장은 가져온 Java 추상 인터페이스를 구현하려고합니다. 다음과 같은 짧은 인터페이스입니다 :추상 일반 추상 인터페이스를 확장하는 방법은 무엇입니까?

public interface USet<T> extends Iterable<T> { 
    public int size(); 
    public boolean add(T x); 
    public T remove(T x); 
    public T find(T x); 
    public void clear(); 
} 

정수로이 인터페이스 USet을 사용하려고합니다. 내 자신의 클래스에서 나는 그렇게으로 (가 추상적이기 때문에 나는 그것을 호출 할 수 없기 때문에)이 클래스를 확장하는 것을 시도하고있다 :

public class Bag extends USet<Integer>{ 
    public int size(); 
    public boolean add(T x); 
    public T remove(T x); 
    public T find(T x); 
    public void clear(); 
} 

기본적으로, 나는 정말 호출 중 하나 USet 내에서 기능을 사용할 필요가 (나는 추상적 인 인터페이스로 할 수 있다고 생각하지 않는다) 또는 확장 기능을 제공한다. 그러나 Integer를 제네릭으로 확장하려고하면 오류가 발생합니다. 이것이 대본 오류입니까?

+3

'USet'은 인터페이스이므로'public class Bag implements USet '이어야합니다. 또한 'T'의 모든 항목을 '정수'로 바꿔야합니다. –

+1

구체적인 컴파일 오류 메시지를 포함하십시오. –

+1

인터페이스를 실제로 이해하지 못하고 사용하는 것과 확장하는 것의 차이점이있는 것 같습니다. 이러한 기본 사항을 먼저 배우십시오. 제네릭은 나중에 나옵니다. Java에는 표준 Set 인터페이스와 몇 가지 구체적인 구현이 있으므로이 USet 인터페이스는별로 의미가 없습니다 (숙제를하지 않으면 Set을 구현할 수 있지만 실제로 수행해야 할 작업을 설명해야합니다). –

답변

1

인터페이스를 구현해야하며 클래스의 유형은이 경우 정수이며 일반 유형은 아닙니다.

인터페이스를 구현할 때 본문을 추가해야합니다.

가방 클래스는 다음과 같아야합니다

public class Bag implements USet<Integer> { 

@Override 
public Iterator<Integer> iterator() { 
    // TODO Auto-generated method stub 
    return null; 
} 

@Override 
public int size() { 
    // TODO Auto-generated method stub 
    return 0; 
} 

@Override 
public boolean add(Integer x) { 
    // TODO Auto-generated method stub 
    return false; 
} 

@Override 
public Integer remove(Integer x) { 
    // TODO Auto-generated method stub 
    return null; 
} 

@Override 
public Integer find(Integer x) { 
    // TODO Auto-generated method stub 
    return null; 
} 

@Override 
public void clear() { 
    // TODO Auto-generated method stub 

} 


} 

업데이트 : stav-saad 만 제대로 구현 한 후에 구현 된 인터페이스 인터페이스의 각 방법 (방법 및 몸을 만들를) 언급 한 바와 같이.

+1

나는 또한 실제로 작동 할 수 있도록 각 메소드의 본문을 실제로 구현해야한다고 덧붙인다. –