栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

有异常的覆盖方法

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

有异常的覆盖方法

您可以声明一个重写方法,使其抛出的异常类型比超类少,而您不能引入新的异常。子类方法必须与超类方法的行为兼容。更准确地说,您必须能够在不破坏任何内容的情况下用子类的对象替换超类的对象(在throws子句中添加新的已检查异常将意味着调用它的事物将必须更改其代码以对其进行处理)。

(这背后的想法是Liskov替换原理:程序应该能够在不涉及任何确切类型细节的情况下高层次地处理对象。如果子类可以引入更改,则意味着程序必须选择它们并以不同的方式处理它们,这将破坏抽象的目的。)

因此,可以将一个覆盖方法声明为根本不引发任何检查异常(通过完全省略throws子句),因为这不需要更改任何调用方。

JDK中有一些示例,例如java.io中的示例,其中子类不可能抛出由超类声明的异常(请参见ByteArrayOutputStream
close方法)。在这里,close方法可能已删除了throws子句,因为它从不抛出IOException。(也许是有人希望使用确实引发IOException的版本将其子类化吗?)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/609775.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号