里氏代换原则
里氏代换原则:子类型必须能够替换掉它们的父类型。
就是说一个软件实体,如果使用的是一个父类的话,那么一定适用于其子类,而且,它觉察不出父类对象和子类对象的区别,也就是说,在软件里面,把父类都替换成它的子类,程序的行为没有变化。
只有当子类可以替换掉父类,软件单位的功能不收到影响时,父类才能真正被复用,而子类也能够在父类的基础上增加新的行为。
正是由于子类型的可替换性,才使得使用父类类型的模块,在无需修改的情况下就可以扩展。
优点:
1、代码共享,减少创建类的工作量,每个子类都拥有父类的方法和属性。
2、提高代码的重用性。
4、提高代码的可扩展性,实现父类的方法,很多开源框架的扩展接口都是通过继承父类来完成的。
5、提高产品或项目的开放性。
当然,有优点就会有缺点,继承的缺点如下:
1、继承是侵入性的,只要继承,就必须拥有父类所有的属性和方法。
2、降低代码的灵活性,子类必须拥有父类的属性和方法,让子类自由的世界中多了些约束。
3、增强了耦合性,当父类的常量、变量和方法被修改时,必须要考虑子类的修改,而且在缺乏规范的环境下,这种修改可能带来非常糟糕的结果——大片的代码需要重构。
里氏代换原则为良好的继承定义了一个规范:
2、子类可以有自己的个性。