为什么在覆盖一个方法的时候子类方法的可见性不能小于父类。

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

阅读 4.2k
2 个回答

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

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

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

新手上路,请多包涵

继承的特性啊

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题