里氏代换原则
里氏代换原则
里氏代换原则:子类型必须能够替换掉它们的父类型。 就是说一个软件实体,如果使用的是一个父类的话,那么一定适用于其子类,而且,它觉察不出父类对象和子类对象的区别,也就是说,在软件里面,把父类都替换成它的子类,程序的行为没有变化。 只有当子类可以替换掉父类,软件单位的功能不收到影响时,父类才能真正被复用,而子类也能够在父类的基础上增加新的行为。 正是由于子类型的可替换性,才使得使用父类类型的模块,在无需修改的情况下就可以扩展。
优点: 1、代码共享,减少创建类的工作量,每个子类都拥有父类的方法和属性。 2、提高代码的重用性。 3、子类可以形成父类,但有异于父类。 4、提高代码的可扩展性,实现父类的方法,很多开源框架的扩展接口都是通过继承父类来完成的。 5、提高产品或项目的开放性。
当然,有优点就会有缺点,继承的缺点如下: 1、继承是侵入性的,只要继承,就必须拥有父类所有的属性和方法。 2、降低代码的灵活性,子类必须拥有父类的属性和方法,让子类自由的世界中多了些约束。 3、增强了耦合性,当父类的常量、变量和方法被修改时,必须要考虑子类的修改,而且在缺乏规范的环境下,这种修改可能带来非常糟糕的结果——大片的代码需要重构。
里氏代换原则为良好的继承定义了一个规范: 1、子类必须完全实现父类的方法。 2、子类可以有自己的个性。 3、覆盖或实现父类的方法时,输入参数就可以被放大。 4、覆盖或实现父类的方法时,输出结果可以被缩小。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Cocos2dx中Android部分的c++和java实现相互调用(高级篇)
- c# – 绑定elementname如何正常工作?
- uboot的bootcmd bootargs参数详解
- 使用flexpaper制作自己的“文库“
- c – 处理模板生成和静态constexpr成员时clang和gcc的不同行
- 在Xcode 8中提供Thread Sanitizer和Address Sanitizer选项需
- postgresql – Postgres alter view add column
- mini2440基于qtopia2.2的电子词典ZBEDIC的移植过程
- Grep家族和正则表达式详解
- c# – iTextSharp:在PdfPCell中使用哪些对齐属性?