在覆盖一个方法的时候,为什么子类方法的可见性不能小于父类该方法的可见性?比如父类是public,子类就一定也要是public的。如果小于父类会有什么弊端么?
继承的特性啊
里氏替换的基本原则,要求子类的方法必须能确保替代父类的实例,如果可见性缩小,那就不能替代了。比如最常用的继承的场景
Car car = new Audi(); car.openDoor();
比如父类Car的中openDoor是public的,Audi中的openDoor是private的。那你在后续的代码中,如果想要使用openDoor,都需要先判断是不是Audi类,因为他没权限openDoor,这明显违背替换原则和使用继承的目的。