다음은 제 원래 문제의 장난감 문제입니다. Bird
은 인터페이스입니다. Cardinal
은 Point
의 하위 클래스이며 Bird
인터페이스를 구현합니다. Aviary
클래스는 구현을 수행합니다.하위 클래스의 인스턴스 메서드에서 수퍼 클래스 개체를 반환하는 방법?
질문 : Aviary
클래스가 올바르게 getPosition()
방법을 수행하는 것이 같은 getPosition()
인스턴스 메소드에 넣어해야합니까?
bird
인터페이스의 추상 메소드가 잘못 코딩 된 경우 저를 시정하십시오.
public class Cardinal extends Point implements Bird{
// Constructors
public Cardinal(int x , int y){
this(x,y);
}
// not sure how to write this instance method
public Point getPosition(){
???????????
}
}
public class Aviary{
public static void main(String[] args){
Bird bird1 = new Cardinal(3,8);
Point pos = bird1.getPosition();
System.out.println("X: " + pos.getX() + ", Y: " + pos.getY());
}
}
getPosition()에서 다음을 작성하십시오. – pd30
왜 '추기경'은 '점'입니까? '추기경'인스턴스가 대신'Point' 인스턴스 변수를 사용해서 그 위치를 추적해서는 안되나요? 위치를 예상하는 코드에 새가 있다면 상당히 놀랍습니다. – user2357112
'추기경'은'점'입니까? 이것은 상속이 합리적인지 확인하기 위해 묻는 전형적인 질문입니다. 반면에, "추기경에게는 한 가지 입장이 있습니다."라고 말하는 것은 완전히 의미가 있습니다. 이것은 대신 컴포지션을 사용하는 것이 더 합리적임을 의미합니다. 이렇게하려면 단순히'Point' 멤버 변수를'Cardinal' 클래스에 추가하십시오. 더 나은 것은, 모든 버드가 위치를 가지고 있기 때문에'버드 (bird)'를'포인트'멤버 변수를 가진 추상 클래스로 만드세요. –