JavaException在艺术继承中的限制

问题:

父类或接口中定义了主意应该抛出的格外,那么当子类重写方法时应该什么定义将要抛出的百般:

首先定义极度和父类:

1 class Exception1 extends Exception {}
2 class Exception2 extends Exception {}
3 class Exception3 extends Exception {}
4 class Exception1_1 extends Exception1 {}
5 class Exception2_1 extends Exception2 {}
6 class Exception3_1 extends Exception3 {}
7 class SuperClass {
8     public void method1() throws Exception1 , Exception2 , Exception3 {}
9 }

科学的不二法门覆盖:

  1. 子类方法只可以抛出父类相当的子集合:

    1 public class TestExceptionLimit extends SuperClass {
    2 @Override
    3 public void method1() {}
    4 }

    public class TestExceptionLimit extends SuperClass {

     @Override
     public void method1() throws Exception1 {}
    

    }

    1 public class TestExceptionLimit extends SuperClass {
    2 @Override
    3 public void method1() throws Exception1 , Exception2 , Exception3 {}
    4 }

上边二种都可以。

  1. 子类可以抛出父类十分的导出类:

    1 public class TestExceptionLimit extends SuperClass {
    2 @Override
    3 public void method1() throws Exception1_1 , Exception2_1 {}
    4 }

3.
还有一种至极的状态,当子类同时继续一个父类和促成一个接口,而且那么些父类和接口同时定义了签约一样的方法,不过抛出相当分歧,那么子类应该怎么着定义自己的法子充裕:

新的代码:

1 class Exception4 extends Exception {}
2 class Exception5 extends Exception {}
3 
4 class SuperClass {
5     public void method1() throws Exception4{}
6 }
7 interface TestInterface {
8     public void method1() throws Exception5 ;
9 }

毋庸置疑的遮盖:

1 public class TestExceptionLimit extends SuperClass implements TestInterface {
2     @Override
3     public void method1(){}
4 }

小心:不要抛出任何尤其,上面可以评释:

1 public class TestExceptionLimit extends SuperClass implements TestInterface {
2     @Override
3     public void method1() throws Exception4 {}
4 }

那段代码编码会出错,错误音信为:Exception Exception4 is not compatible
with throws clause in
TestInterface.method1()。表示和接口定义的那些不合作,即使你品尝抛出Exception5它又会告知您和父类定义的可怜不般配,所以不写还丰盛嘛–!,Java设计者们或者挺人性化的~~~

 

相关文章