상속과 오버라이딩에 관련된 문제로 이해하고 풀었습니다. 동영상 풀이를 보고 정답이 유추되는 과정은 이해했으나 제가 풀이한 식과 무엇이 다르기에 도출되는 답이 틀린지 알고싶습니다!
class SuperObject {
(기타 다른 코드)
public void draw() {
draw();
system.out.println("Super Object")
}
}
class SubObject extends SuperObject {
(기타 다른 코드)
public void draw() {
System.out.println("Sub Object");
}
}
해당 식으로 구성되어 있을때 저는 draw()메서드가 이름과 인자값이 같아 오버라이딩 된다고 생각했습니다. 오버라이딩이 되면, SuperObject의 draw 메서드 대신 자식 메서드로 대체되어 Sub Object만 출력이 된다고 생각했는데.
더 정확하게 어떤 경우에 메서드가 오버라이딩 되고 어떤 경우에 메서드가 번갈아 출력되는지 설명 해주실수 있으실까요ㅠㅠ
안녕하세요 길벗수험서 운영팀입니다.
super.draw( ) ; 이코드에 보시면 super라는 예약어가 사용이 되었습니다.
super 예약어는 상속 관계에 있는 부모 클래스를 가리키는 예약어 입니다.
이런 코드를 만나면 부모 클래스의 draw( )가 실행됩니다
draw( ) ; 이코드에는 super라는 예약어가 사용되지 않았습니다.
이문제는 회원님께서 말씀하신것처럼 draw( ) 메소드가 자식 클래스에서 재정의를 통해 오버라이딩 된 메소드이므로
자식 클래스의 draw( ) 메소드를 수행합니다
행복한 하루되세요 :)
-
관리자2025-07-03 20:54:01
안녕하세요 길벗수험서 운영팀입니다.
super.draw( ) ; 이코드에 보시면 super라는 예약어가 사용이 되었습니다.
super 예약어는 상속 관계에 있는 부모 클래스를 가리키는 예약어 입니다.
이런 코드를 만나면 부모 클래스의 draw( )가 실행됩니다
draw( ) ; 이코드에는 super라는 예약어가 사용되지 않았습니다.
이문제는 회원님께서 말씀하신것처럼 draw( ) 메소드가 자식 클래스에서 재정의를 통해 오버라이딩 된 메소드이므로
자식 클래스의 draw( ) 메소드를 수행합니다
행복한 하루되세요 :)