Moh*_*han 0 java polymorphism overriding exception
我有一个下面的程序:
class SuperClassWas {
void myM() throws NullPointerException{
System.out.println("Super class myM called.");
}
}
class SubClassWas extends SuperClassWas{
void myM() throws RuntimeException{
System.out.println("Sub class myM called.");
}
}
public class MethodOveridingWithException {
public static void main(String[] args) {
SuperClassWas obj = new SubClassWas();
obj.myM();
}
}
Run Code Online (Sandbox Code Playgroud)
按照规则
如果SuperClass声明了异常,则SubClass只能声明SuperClass声明的异常的子级异常,而不能声明其他任何异常。
在我的程序中,超级类方法myM扩展了NullPointerException,子类重写方法myM扩展了RuntimeException,当我尝试运行程序时,它运行良好。问题是为什么?理想情况下,它不应工作,因为RuntimeException它不是的子类NullPointerException。
如果我错了,请纠正我。