素材牛VIP会员
为什么在覆盖一个方法的时候子类方法的可见性不能小于父类。
 lo***68  分类:Java代码  人气:868  回帖:2  发布于6年前 收藏

在覆盖一个方法的时候,为什么子类方法的可见性不能小于父类该方法的可见性?
比如父类是public,子类就一定也要是public的。
如果小于父类会有什么弊端么?

 标签:java

讨论这个帖子(2)垃圾回帖将一律封号处理……

Lv5 码农
龙***6 UI设计师 6年前#1

继承的特性啊

Lv6 码匠
飞***e 产品经理 6年前#2

里氏替换的基本原则,要求子类的方法必须能确保替代父类的实例,如果可见性缩小,那就不能替代了。
比如最常用的继承的场景

Car car = new Audi();
car.openDoor();

比如父类Car的中openDoor是public的,Audi中的openDoor是private的。
那你在后续的代码中,如果想要使用openDoor,都需要先判断是不是Audi类,因为他没权限openDoor,
这明显违背替换原则和使用继承的目的。

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取