오버라이딩의 조건

yanju·2022년 11월 26일
0
post-thumbnail

오버라이딩은 메서드의 내용만을 새로 작성하는 것이므로 메서드의 선언부는 조상의 것과 완전히 일치해야 한다.

자식 클래스에서 오버라이딩하는 메서드는 다음과 같은 조건을 만족해야 한다.

  1. 이름이 같아야 한다.
  2. 매개변수가 같아야 한다.
  3. 반환 타입이 같아야 한다.

다만 접근 제어자와 예외는 제한된 조건 하에서만 다르게 변경할 수 있다.

  • 접근 제어자는 부모 클래스의 메서드보다 좁은 범위로 변경할 수 없다.

    • 부모 클래스의 메서드가 protected라면, 자식 클래스에서 메서드는 protected, public 이어야 한다.
  • 부모 클래스의 메서드보다 많은 수의 예외를 선언할 수 없다.

    • 아래는 자식 클래스가 부모 클래스보다 예외의 개수가 적으므로 바르게 오버라이딩 했다.

      class Parent {
      	void parentMethod() throws IOException, SQLExcpetion
      }
      
      class Child extends Parent {
      	void parentMethod() throws IOException
      }
    • 단순히 예외의 개수가 아니라 예외의 종류도 중요하다. 아래처름 Exception은 모든 예외의 최고 부모이므로 가장 많은 개수의 예외를 던질 수 있다. 이것은 잘못된 오버라이딩이다.

      class Child extends Parent {
      				void parentMethod() throws Exception
      }

0개의 댓글