Java中关于子类覆盖父类的抛出异常问题
来源:互联网 发布:淘宝真正的原单店 编辑:程序博客网 时间:2024/06/05 20:19
Java中子类覆盖父类方法抛出异常不能比父类多,这个表述不够准确。准确一点的描述为:子类抛出的异常类型不能比父类抛出的异常类型更宽泛。假设父类抛出异常ParentException,另外有两个子类继承自ParentException分别为ChildException1, ChildException2, 那么 子类可以同时抛出异常ChildException1,ChildException2. 满足“子类抛出的异常类型不能比父类抛出的异常类型更宽泛”,这一条件。 注意:子类也可以选择不进行抛出任何异常,即使他们是父类所定义的异常。
为什么Java设计成这样,下面举个例子进行分析:
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类型。因为必须把父类作为一个大前提,其子类不能抛出比父类异常更加出格的异常,否则无法进行识别。
大概就是这个意思。
阅读全文
1 0
- Java中关于子类覆盖父类的抛出异常问题
- Java中子类抛出异常的规则
- 方法覆盖子类不能抛出比父类范围更大的异常
- Java 中子类重写父类的方法时声明抛出异常不能比父类范围大
- 为什么java中子类重写父类的方法时声明抛出异常不能比父类范围大
- 关于java子类方法覆盖(Override)父类方法时,该子类方法返回值的问题
- Java关于子类对父类私有方法覆盖的问题
- Java关于子类对父类私有方法覆盖的问题
- 子类抛出的异常类型不能比父类抛出的异常类型更宽泛!
- JAVA为什么子类继承父类方法之后,不能抛出比父类更多的异常?
- JAVA为什么子类继承父类方法之后,不能抛出比父类更多的异常?
- 有关java中子类覆盖父类的方法的返回值的问题
- java中子类与父类的同名变量覆盖问题
- 关于spring中抛出NotWritablePropertyException异常的问题
- Java中关于try{}catch{}抛出异常的一个例子
- java 子类可以继承父类中的什么,子类中方法覆盖,final关键字的含义
- Java子类父类属性的覆盖
- Java子类父类属性的覆盖
- C与指针 1-3章
- 洛谷1295:书架(堆优化dp)
- JavaScript 实例:书讯快递(循环滚动)(offsetHeight,scrollTop)
- metasploit 情报搜集技术【3】服务扫描、查点、口令猜解与嗅探
- Javascript测试框架Jasmine(一):简介
- Java中关于子类覆盖父类的抛出异常问题
- JAVA多线程与单列模式--同步演示
- Zookeeper
- 分布式开发之linux配置
- 72. Edit Distance
- win10 安装 VMware Workstation 14
- bootStrap输入框鼠标指针样式设定
- Javascript测试框架Jasmine(二):Matchers
- StringBuilder和StringBuffer和String区别