더북(TheBook)

그랬더니 실행결과가 달라졌습니다. 부모 클래스인 Car가 가진 run 메서드를 실행하지 않고, 자식 클래스인 Van이 새로 정의한 run 메서드를 실행했습니다.

 

오버라이딩이란 단어를 직역하면 ‘올라탄다’라는 의미입니다. 부모의 메서드와 같은 메서드를 자식이 재정의해서 올라가 있다는 의미겠죠.

 

‘재정의’한다면 부모 클래스의 메서드가 아예 사라진다는 의미일까요? 그건 아닙니다. 예를 들어 부모 클래스의 메서드를 아예 사용하지 않는 것이 아니라, 사용하면서 특정 부분만 추가하고 싶은 경우가 있습니다.

 

이럴 때는 어떻게 하는지 알아보겠습니다. 다음 코드를 봐주세요.

package javaStudy;

public class Van extends Car {
    public void run() {
        super.run();
        System.out.println("Van의 run 메서드");
    }
}

 

실행결과

Car의 run 메서드
Van의 run 메서드

 

자식 클래스에서 run 메서드를 호출하면 자식이 가진 run 메서드만 호출합니다. 이때 41장에서 배운 super 키워드를 사용해 자식 클래스에서 부모 클래스의 메서드를 호출할 수 있습니다. super 키워드는 자식이 부모의 메서드나 필드를 사용할 때도 쓸 수 있다고 했죠?

 

코드를 변경한 후 실행해보면 Car 클래스와 Van 클래스의 run 메서드가 차례대로 잘 실행됩니다. super 키워드 사용법을 알아보고, 오버라이딩해도 부모 클래스의 메서드가 사라지지 않는 것을 확인했습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.