解释
- 子类型必须完全替代掉它的父类型
 - 任何基类出现的地方,子类一定可以出现
 - 修改了基类,不会对子类造成影响,基类能真正的被复用
 - 一个软件实体的如果使用一个父类的话,那么一定适用于它的子类,而且它察觉不出父类对象与子类对象的区别
 
继承的优点
- 代码共享,减少类的创建代码量,子类能拥有父类的属性和方法
 - 提升了代码重用性
 - 子类可拥有父类的功能,又有父类不同的功能
 
继承的缺点
- 继承的侵入性,继承父类必须完全继承父类的方法和属性
 - 降低代码灵活性,子类因继承父类会受到一些限制
 - 增强了耦合性,更改父类的代码功能,可能会影响到子类,在缺乏规范的情况下,可能需要大面积重构代码
 
违背里氏替换原则
- 在调用其他类时务必使用父类或接口,如果不能使用父类或接口,说明类的设计违背了LSP原则
 - 子类不能完全实现父类的方法(比如企鹅不应该继承鸟类,因为企鹅不会飞而鸟类会飞),或者父类的某些方法在子类中发生了“畸变”,建议断开继承关系,采用依赖、聚集、组合的方式替代继承
 
里氏替换原则使用规范
- 子类可以扩展父类的功能,但不能改变父类原有的功能(不能重写或覆盖父类的非抽象(已实现)方法)
 - 子类可添加自己特有的方法
 - 子类在覆写或实现父类方法时,输入参数的范围可被扩大
 - 子类在覆写或实现父类方法时,输出参数的范围可被缩小