Object Casting 및 메서드 재정의를 이해하려고합니다.Java throw 예외에서 메서드 재정의
이 오류 제공public class ExceptionClass{
void m() throws SQLException{}
}
class A extends ExceptionClass{
void m() throws Exception{}
}
"예외 예외() ExceptionClass.m에 throws 절과 호환되지 않습니다"
나는 코드의 조각이있다.
같은
은 나뿐만 작성하는 경우 :public class ExceptionClass{
void m() throws SQLException{}
}
class A extends ExceptionClass{
void m() throws RuntimeException{}
}
이 나던 오류를 포기하고 방법도 적절하게 무시됩니다. 일부 분석 후 나는 SQLException이 Exception 클래스에서 확장 되었기 때문에 하위 클래스에서 "SQLException"을 "Exception"으로 대체 할 수 없다 (오버라이드 된 메서드의 서명을 변경 함) 것으로 생각했습니다.
그러나 나는이 한 :
public class ExceptionClass{
void m() throws NullPointerException{}
}
class A extends ExceptionClass{
void m() throws RuntimeException{}
}
을하지만 오류는 여기 없다 ..! 위에서 언급 한 이유로 같은 오류가 발생한다고 생각했습니다.
왜 이런 식으로 행동하는지 잘 모르겠습니다. 또한 메서드 서명을 예외를 throw하는 메서드를 재정의 할 때 따라야 할 규칙은 무엇입니까?
요점은 OP가 더 넓은 예외를 throw하는 방법을 선언하고 있다는 것입니다. –
@ JigarJoshi : 그는 이미 그것을 이해 한 것 같습니다. – SLaks
_ 메소드를 재정의 할 때 따라야 할 규칙은 무엇입니까? –