728x90
오버라이딩 시 자식 클래스는 부모 클래스의 메서드보다 많은 수의 예외를 선언할 수 없다.
class Parent {
void parent() throws IOException, SQLException {
// Code stuff...
}
}
class Child extends Parent {
@Override
void parent() throws IOException {
// Code stuff...
}
}
Child 클래스의 parent 메서드에 선언된 예외의 개수가 부모인 Parent 클래스의
parent 메서드에 선언된 예외의 개수보다 적으므로 올바르게 오버라이딩 되었다.
class Parent {
void parent() throws IOException, SQLException {
// Code stuff...
}
}
/* Error occured while overriding */
class Child extends Parent {
@Override
void parent() throws Exception {
// Code stuff...
}
}
만일 위와 같이 오버라이딩을 하였다면 부모 클래스에 정의된 메서드보다 적은 개수의 예외를 선언한 것처럼 보이지만
Exception은 모든 예외 클래스의 최상단 부모이므로 가장 많은 개수의 예외를 던질 수 있도록 선언한 것이다.
따라서 예외의 개수는 적거나 같아야 한다는 조건을 만족시키지 못하는 잘못된 오버라이딩인 것이다.
자식 클래스의 메서드는 부모 클래스의 메서드의 접근 제어자보다 작은 범위의 접근 제어자를 가질 수 없고 인스턴스 메소드를 클래스 메소드로 바꿀 수 없는 등 여러 가지 오버라이딩 주의점은 알고 있었지만 이러한 Exception 핸들링 범위에 대한 내용은 모르고 있었다.
'Develop > Java' 카테고리의 다른 글
Java 접근 제어자와 기타 제어자 (1) | 2022.09.21 |
---|---|
Java 배열 사이에 콤마를 포함한 문자열로 변경하기 (0) | 2022.09.20 |
Java String, StringBuilder, StringBuffer (0) | 2022.09.17 |
JVM 동작 방식과 구조 정리 (0) | 2022.09.17 |
다양한 Java 플랫폼 정리 (0) | 2022.09.17 |