设计模式七大原则(三)-里氏代换原则

里氏代换原则:
  所有引用基类的地方必须能透明的使用其子类对象(就是用基类的地方换成子类不会出错)。里氏代换原则是实现开闭原则的重要方式之一,是对开闭原则的补充。
  程序中应尽量使用基类类型来对对象定义,而进行运行时再确定其子类,用子类对象来替换父类。通俗来说:就是子类可以扩展父类的功能,但是不要改变父类原有的功能。即子类继承父类时,可以新增扩展功能,但是不要去重写覆盖父类中的原有方法。

举个有名的例子:正方形不是长方形。
长方形的计算面积是length*width,但是正方形两遍等长,继承长方形的话就要修改。那此时如果实例化一个长方形
给用户用(5,4),可以得出想要面积为20结果;但是给正方形的话(5,4)却得到16的结果。用户是不知道是正方形的实例的。由于继承你的重写已经覆盖并且改变了基类Rectangle的计算方法,这就违反了里氏代换原则。我说的不知道大家是否理解,大家可以参考这个例子,这个包含程序,也许看的更直白些。
设计模式七大原则(三)-里氏代换原则