메소드 재정의

이영광·2022년 7월 16일

자바

목록 보기
32/34

출처 : 혼자공부하는자바

부모 클래스의 모든 메소드가 자식 클래스에 맞게 설계되어 있다면 가장 이상적인 상속이지만, 어떤 메소드는 자식 클래스가 사용하기에 적합하지 않을 수도 있다. 이경우 상속된 일부 메소드는 자식 클래스에서 다시 수정해서 사용해야 한다. 자바는 이런 경우를 메소드 재정의라고 한다.

메소드 재정의 방법

메소드 재정의는 자식 클래스에서 부모 클래스의 메소드를 다시 정의 하는것을 말한다. 메소드를 재정의할 때는 다음과 같은 규칙에 주의해서 작성해야 한다.

  • 부모의 메소드와 동일한 시그니처(리턴타입,메소드 이름, 매개변수 목록)를 가져야 한다.
  • 접근 제한을 더 강하게 재정의할 수 없다.
  • 새로운 예외 처리를 할수 없다.

참고: 접근 제한을 더 강하게 재정의할 수 없다는 것은 부모 메소드가 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(); -> 상속받은 부모 메소드 호출
  }

}                   
                   
profile
《REACT》《JAVASCRIPT 》 만지고있어욤

0개의 댓글