2014-01-29 3 views
1

하위 유형을 사용하는 방법을 재정의 : 나는 그것을 전에에서 방법을 가지고 추상 클래스는 내가를 얻을 확장하는 구상 클래스에서 구현할 때 다음내가 추상 클래스는 추상 메소드 필요가

public abstract SomeClass Do(SomeClass o1, SomeClass o2); 

을 오류 :

@Override 
public AClass Do(AClass o1, AClass o2) //AClass extends Someclass 
{ 
// 
} 

왜 AClass는 SomeClass의 하위 유형이므로 오류가 발생합니까? ... 방법은 동일한 인터페이스를 지원하지 않기 때문에 무시하거나 오류가 발생하는 슈퍼 타입의 방법

+0

어떤 오류가 발생합니까? – csmckelvey

답변

11

를 구현해야

오류입니다. 그것은 단지 AbstractClass 추상적 인 방법을 사용하고 마우스 오른쪽 -

AbstractClass x = new ImplementingClass(); 
x.Do(new SomeClass(), new SomeClass()); 

일해야한다는이 같은 호출을 상상해? 그러나 전달하는 값은 AClass 개의 참조가 아니며 단지 SomeClass 개의 참조입니다.

반환 유형 은 괜찮지 만 신고하려는 매개 변수가 원본 API보다 "좁은"값이므로 원래의 메소드가 호출 할 수있는 모든 메소드를 처리 할 수 ​​없으므로 무시할 수 없습니다. 그것.

관련 문제