본문 바로가기

언어공부/Java

자바 메소드 오버라이딩(Overriding), 오버라이딩과 오버로딩 차이

자바 메소드 오버라이딩에 대해서 알아보자.

메소드 오버라이딩(Method Overriding)

조상 클래스로부터 상속받은 메소드의 내용을 자식 클래스에 맞게 변경하는 것을 오버라이딩 이라고 한다. 상속받은 메소드를 그대로 사용하기도 하지만, 자손 클래스 자신에 맞게 변경해야하는 경우가 많기 때문에 오버라이딩이 필요하다. 

 

오버라이딩의 조건은 아래와 같다.

  • 오버라이딩은 반드시 부모자식간의 상속관계를 만들어야 한다.
  • 자손클래스에서 부모클래스의 기존 메소드이름, 전달인자의 자료형과 전달인자의 개수, 반환타입등을 동일하게 정의한다.
  • 자손클래스에서 메소드는 부모클래스의 접근 제어보다 더 좁아질 수 없다.
  • 예외는 조상 클래스의 메소드보다 많이 선언할 수 없다.
  • 생성자는 상속이 되지 않기 때문에 생성자 오버라이딩은 없다.

오버라이딩은 아래와 같이 사용된다.

 

상속받은 p05메소드를 오버라이딩.

 

출력화면

 

Child05가 Parent05를 상속받고, 상속받은 메소드 p05를 오버라이딩해서 변경하였을 때, ch.p05();로 메소드를 호출하면 부모클래스의 메소드가 아닌 오버라이딩 된 메소드가 호출된다. 

 

이클립스 메뉴에서 오버라이딩 하는 방법은 아래와 같다. 

 

 

오른쪽 클릭한 상태에서 source-Override를 클릭한 다음,

 

 

오버라이딩 할 메소드를 클릭해서 OK를 눌러주면 된다.

 


오버라이딩과 오버로딩 차이

오버라이딩과 오버로딩의 차이는, 오버로딩은 기존에 없는 새로운 메소드를 추가(new)하는 것이고, 오버라이딩은 조상으로부터 상속받은 메소드의 내용을 변경(change)하는 것이다.

 

즉, 오버로딩은 상속과 관계가 없으며, 오버라이딩은 상속과 관계가 있다.

 

ex)