출처 : 혼자공부하는자바
부모 클래스의 모든 메소드가 자식 클래스에 맞게 설계되어 있다면 가장 이상적인 상속이지만, 어떤 메소드는 자식 클래스가 사용하기에 적합하지 않을 수도 있다. 이경우 상속된 일부 메소드는 자식 클래스에서 다시 수정해서 사용해야 한다. 자바는 이런 경우를 메소드 재정의라고 한다.
메소드 재정의는 자식 클래스에서 부모 클래스의 메소드를 다시 정의 하는것을 말한다. 메소드를 재정의할 때는 다음과 같은 규칙에 주의해서 작성해야 한다.
참고: 접근 제한을 더 강하게 재정의할 수 없다는 것은 부모 메소드가 public 접근 제한을 가지고 있을 경우 재정의 하는 자식 메소드는 default 나 private 접근 제한으로 수정할 수 없다는 뜻.
단 바대는 가능 부모메소드가 default 접근 제한을 가지면 재정의하는 자식 메소드는 default 또는 public 접근 제한을 가질 수 있습니다.
메소드가 재정의 되었다면 부모 객체의 메소드는 숨겨지기 때문에, 자식 객체에서 메소드를 호출하면 재정의된 자식 메소드가 호출된다.
자식 클래스에서 부모 클래스의 메소드를 재정의하게 되면, 부모 클래스의 메소드는 숨겨지고 재정의된 자식 메소드만 사용된다. 그러나 자식 클래스 내부에서 재정의된 부모 클래스의 메소드를 호출해야 하는 상황이 발생하면 명시적으로 super를 붙여서 부모 메소드를 호출할수 있다.
super.부모메소드
class Parent{
void method1(){...}
void method2(){...}
}
class Child extends parent{
void method2(){...재정의}
void method3(){
method2() ->재정의된 메소드
super.method2(); -> 상속받은 부모 메소드 호출
}
}