【情况描述】如下代码,在父类中定义了两个构造方法,各自throws不同的异常。当定义子类时,IDE会提示需要显示定义构造方法来抛出父类构造方法的异常。很自然地认为应该抛出父类所有构造方法的异常,然而只抛出任意一个父类构造方法的异常都可以通过运行!这很纳闷,很难理解
---------------父类--------------------
import java.io.IOException;
import java.rmi.RemoteException;
public class Parent {
protected Parent() throws IOException{
System.out.println("IOException");
}
protected Parent(int i) throws RemoteException{
System.out.println("RemoteException:"+i);
}
}
---------------子类--------------------
import java.io.IOException;
public class Sub extends Parent {
public Sub(int i) throws IOException{
super(i);
System.out.println("construtor in sub");
}
}
在子类构造方法中,哪怕在其中调用父类的会抛出RemoteException异常的构造方法,然而子类构造方法只需抛出任意一个构造方法的异常(即使抛出的是另外一个构造方法的异常,如上throws IOException)即可运行。
【疑问】
父类的多个构造方法各自抛出不同的异常,子类的构造方法应该抛出哪个/些异常?