为什么子类访问修饰符要比父类大或者相同。

为什么子类的访问修饰符要比父类大或者相同呢?

嗯,个人理解,

  • 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。如果子类的访问修饰符小于父类的话,那就不符合里氏替换原则,
  • LSP 是面向对象六大设计原则之一,是继承复用的基石,继承是面向对象三大特性之一
  • 在编码中,只有当派生类可以替换掉基类,基类才能真正被复用,而派生类也能够在基类的基础上增加新的行为。
  • 所以说对于面向对象语言来讲,子类访问修饰符要大于或等于父类。

在Java里面的继承里面,即子类继承父类,就记住青出于蓝而胜于蓝这句话就行;

我是这样理解的,简单粗暴地说就是子类本身是为了更好地使用父类而创建的,但如果父类本身可以用,而子类反而不能用了,那这个子类的存在就没有意义,所以子类的访问权限要大于等于父类才是合理的

没有为什么就是语言这样定的规则
你说的应该是java,而C++正好是反过来的,子类必须小于等于父类。