java 重写或者覆父类方法的使用throws 抛出异常,为什么要小于父类父类
- 子类重写父类的方法,其抛出的异常类型为什么只能是被重写的方法的异常类的子类或者类型一样?
- 解释我写在代码里
public class TestThrowsException {
public static void main(String[] args) {
A a = new B();
try {
//1.编译的时候,认为异常类型是A类的method1抛出的,所以看到catch那的第二点。.
a.method1();
//2.catch到的只能是A类的method1抛出的IoException,但运行的时候实际抛过来的是
//B类method1方法throws的FileNotFoundException,所以如果子类方法异常类大于父类,
//其在多态中是不能接收的,或说父类实例对象不能直接赋给子类引用,需要强制转换,
//但实例还是的子类实例,所以这里可能会出现强制转换出错的情况
} catch (IOException e) {
e.printStackTrace();
}
}
}
class A{
public void method1() throws IOException {
}
}
class B extends A{
public void method1() throws FileNotFoundException{
}
}