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

所属分类: 软件编程 / java 阅读数: 31
收藏 0 赞 0 分享

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类型。因为必须把父类作为一个大前提,其子类不能抛出比父类异常更加出格的异常,否则无法进行识别。

大概就是这个意思。

总结

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

更多精彩内容其他人还在看

Java Set简介_动力节点Java学院整理

Set最大的特性就是不允许在其中存放的元素是重复的。接下来通过本文给大家分享java set常用方法和原理分析,需要的的朋友参考下吧
收藏 0 赞 0 分享

Java Timezone类常见问题_动力节点Java学院整理

这篇文章主要介绍了Java Timezone类常见问题的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

javaWeb项目部署到阿里云服务器步骤详解

本篇文章主要介绍了javaWeb项目部署到阿里云服务器步骤详解,非常具有实用价值,需要的朋友可以参考下
收藏 0 赞 0 分享

详解使用zxing库生成QR-Code二维码

这篇文章主要介绍了详解使用zxing库生成QR-Code二维码的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

java实现对服务器的自动巡检邮件通知

这篇文章主要为大家详细介绍了java实现对服务器的自动巡检邮件通知,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

java随机验证码生成实现实例代码

这篇文章主要介绍了java随机验证码生成实现实例代码的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

java读取txt文件代码片段

这篇文章主要为大家详细介绍了java读取txt文件的代码片段,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

java连接mysql数据库的方法

这篇文章主要为大家详细介绍了java连接mysql数据库的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

java 算法之快速排序实现代码

这篇文章主要介绍了java 算法之快速排序实现代码的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

详解Spring缓存注解@Cacheable,@CachePut , @CacheEvict使用

这篇文章主要介绍了详解Spring缓存注解@Cacheable,@CachePut , @CacheEvict使用,非常具有实用价值,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多