里氏代换原则

里氏代换原则


          里氏代换原则:子类型必须能够替换掉它们的父类型。

          就是说一个软件实体,如果使用的是一个父类的话,那么一定适用于其子类,而且,它觉察不出父类对象和子类对象的区别,也就是说,在软件里面,把父类都替换成它的子类,程序的行为没有变化。

          只有当子类可以替换掉父类,软件单位的功能不收到影响时,父类才能真正被复用,而子类也能够在父类的基础上增加新的行为。

正是由于子类型的可替换性,才使得使用父类类型的模块,在无需修改的情况下就可以扩展。


          优点:

          1、代码共享,减少创建类的工作量,每个子类都拥有父类的方法和属性。

          2、提高代码的重用性。

          3、子类可以形成父类,但有异于父类。

          4、提高代码的可扩展性,实现父类的方法,很多开源框架的扩展接口都是通过继承父类来完成的。

          5、提高产品或项目的开放性。


          当然,有优点就会有缺点,继承的缺点如下:

          1、继承是侵入性的,只要继承,就必须拥有父类所有的属性和方法。

          2、降低代码的灵活性,子类必须拥有父类的属性和方法,让子类自由的世界中多了些约束。

          3、增强了耦合性,当父类的常量、变量和方法被修改时,必须要考虑子类的修改,而且在缺乏规范的环境下,这种修改可能带来非常糟糕的结果——大片的代码需要重构。


          里氏代换原则为良好的继承定义了一个规范:

          1、子类必须完全实现父类的方法。

          2、子类可以有自己的个性。

          3、覆盖或实现父类的方法时,输入参数就可以被放大。

          4、覆盖或实现父类的方法时,输出结果可以被缩小。

 

你可能感兴趣的:(里氏代换原则)