例子:
class Exception1 extends Exception {
}
class Exception2 extends Exception {
}
class One {
public void test() throws Exception1 {
}
}
interface Two {
public void test() throws Exception2;
}
public class TestException extends One implements Two {
@Override
public void test() {
}
}
java编程思想中关于上面解释:
Two接口定义的方法test()。这个方法相比类One的test()方法抛出新的异常Exception2,如果TestException类在扩展One类的同时又实现了Two接口,那么Two接口里的test()方法就不能改变在One中的
test()方法的异常接口。否则的话,在使用基类的时候就不能判断是否捕获了正确的异常,所以这也很合理。
疑惑:
我上面在TestException类中定义了一个新的test()方法,整体代码也无报错,现在接口Two不是在原来One基础上改变了抛出的异常接口,与java编程思想所说“**那么Two接口里的test()方法就不能改变在One中的
test()方法的异常接口**”不太符合啊?
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…