A2和A3中方法a可以声明抛出哪几个异常?
interface A0 {
void a() throws CloneNotSupportedException, IOException;
}
interface A1 {
void a() throws SQLException, IOException;
}
interface A2 extends A0 {
void a();
}
interface A3 extends A0,A1 {
void a();
}
继承关系有一个原则,即在任何一个使用父类对象的地方都可以用子类对象来替换而不影响对象的行为。大致有以下规则
1、父类中的方法(以下简称父方法)抛出的异常,子类中覆写的方法(以下简称子方法)可以不声明。
2、父方法抛出多种异常,子方法可以声明其中的任意一个或多个。
3、子方法可以抛出的异常,可以是父方法抛出的异常的子类。
4、子方法不允许声明父方法没有声明过的异常类型。
5、子方法也不允许声明父方法抛出的异常的父类。
子方法抛出异常范围必须小于父方法。
对于A2,可以不声明,或者声明A0中的一个或多个。
对于A3,由于同时继承了A0和A1,因此可以声明的只有IOException以及其子类。
参照这篇帖子