好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Java中关于子类覆盖父类的抛出异常问题

java中子类覆盖父类方法抛出异常不能比父类多,这个表述不够准确。

准确一点的描述为:

子类抛出的异常类型不能比父类抛出的异常类型更宽泛。假设父类抛出异常parentexception,另外有两个子类继承自parentexception分别为childexception1, childexception2, 那么 子类可以同时抛出异常childexception1,childexception2. 满足[子类抛出的异常类型不能比父类抛出的异常类型更宽泛],这一条件。

注意:

子类也可以选择不进行抛出任何异常,即使他们是父类所定义的异常。

为什么java设计成这样,下面举个例子进行分析:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

package exceptions;

class sick extends exception{}

class feversick extends sick{}

class jointsick extends sick{}

class children extends people{

  public void coldair() throws feversick{ }

}

class adults extends people{

   public void coldair(){}

}

class olds extends people{

   public void coldair() throws jointsick{ }

}

public class people {

  public void coldair() throws sick{ }

}

如上代码,定义了一个父类 people 类,以及其三个子类 children , adults , olds . 假设在父类中有一个冷空气事件,那么它就会抛出一个sick类型的异常。但是由于三个子类的抵抗疾病的能力不同,那么adults类由于抵抗力较强,其方法可能不抛出异常。而children和adults类型,由于抵抗力较弱,可能抛出sick类型的不同子类型。但是需要注意的是,子类不能抛出与sick类完全不相关的异常类型,例如身高height类型。因为必须把父类作为一个大前提,其子类不能抛出比父类异常更加出格的异常,否则无法进行识别。

大概就是这个意思。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接

原文链接:https://blog.csdn.net/yangyong0717/article/details/7849461

查看更多关于Java中关于子类覆盖父类的抛出异常问题的详细内容...

  阅读:19次