[자바] 오버라이딩

June·2021년 1월 2일
0

자바

목록 보기
12/36

조상 클래스로부터 상속받은 메서드의 내용을 변경하는 것을 오버라이딩이라고 한다.

자손 클래스에서 오버라이딩하는 메서드는 조상 클래스의 메서드와
-이름이 같아야 하낟
-매개변수가 같아야 한다
-반환타입이 같아야 한다

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

만일 조상 클래스에 정의된 메서드의 접근 제어자가 protected라면, 이를 오버라이딩하는 자손 클래스의 메서드는 접근 제어자가 protected나 public이어야 한다. 대부분의 경우 같은 범위의 접근 제어자를 사용한다. 접근 제어자의 접근범위를 넓은 것에서 좁은 것 순으로 나열하면 public, protected, (default), private 이다.

2. 조상 클래스의 메서드보다 많은 수의 예외를 선언할 수 없다.

class Parent {
     void parentMethod() throws IOException, SQLException {
      ...
     }
 }
 
 class Child extends Parent {
     void parentMethod() throws IOException {
      ...
     }
 }

여기서 주의해야할 점은 단순히 선언된 예외의 개수가 문제가 아니라는 것이다.

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

만일 위와 같이 오버라이딩을 하면, 조상클래스으ㅔ 정의된 메서드보다 적은 개수의 예외를 선언한 것처럼 보이지만, Exception은 모든 예외의 최고 조상이므로 가장 많은 개수의 예외를 던질 수 있도록 선언한 것이다.

조상 클래스의 메서드를 자손 클래스에서 오버라이딩할 때
1. 접근 제어자를 조상 클래스의 메서드보다 좁은 범위로 변경할 수 없다
2. 예외는 조상 클래스의 메서드보다 많이 선언할 수 없다
3.인스턴스메서드를 static메서드로 또는 그 반대로 변경할 수 없다

0개의 댓글