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

为什么派生类重写方法不应比Java中的基类更严格?

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

为什么派生类重写方法不应比Java中的基类更严格?

关键是,仅知道您的 超类 的调用者仍应能够使用给定的 子类的 任何实例。考虑这种情况:

public class Super{    public void print()    {        System.out.println("Hello!");    }}public class Sub extends Super{    @Override    void print() // Invalid    {        System.out.println("Package access");    }}

现在从另一个包中,想象我们有:

public void printSuper(Super x){    x.print();}

我们这样称呼:

printSuper(new Sub());

您希望这样做吗?您正在重写该方法,因此它 应该显示 “包访问”-但这意味着您正在从其他包中调用一个包访问方法…

基本上,这只是“
里斯科夫替代原则”在实践中的一个例子。您应该能够将子类的任何实例视为超类的实例,并且很难看到这与使子类中的事物更具约束性相适应。



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

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

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