在覆盖一个方法的时候,为什么子类方法的可见性不能小于父类该方法的可见性?
比如父类是public,子类就一定也要是public的。
如果小于父类会有什么弊端么?
在覆盖一个方法的时候,为什么子类方法的可见性不能小于父类该方法的可见性?
比如父类是public,子类就一定也要是public的。
如果小于父类会有什么弊端么?
4 回答1.4k 阅读✓ 已解决
4 回答1.2k 阅读✓ 已解决
1 回答2.6k 阅读✓ 已解决
2 回答737 阅读✓ 已解决
2 回答1.7k 阅读
2 回答1.7k 阅读
2 回答1.3k 阅读
里氏替换的基本原则,要求子类的方法必须能确保替代父类的实例,如果可见性缩小,那就不能替代了。
比如最常用的继承的场景
比如父类Car的中openDoor是public的,Audi中的openDoor是private的。
那你在后续的代码中,如果想要使用openDoor,都需要先判断是不是Audi类,因为他没权限openDoor,
这明显违背替换原则和使用继承的目的。