里氏代换原则 Liskov Substitution Principle, LSP

定义严格表达

如果对每一个类型为T1的对象O1,都有类型为T2的对象O2,使得以T1定义的所有程序P在所有的对象O1都代换成O2时,程序P的行为没有变化,那么类型T2是类型T1的子类型。

简单说,任何基类可以出现的地方,子类一定可以出现。

从代码重构的角度理解:

西方著名的思辨,正方形是否是长方形的子类的问题。

这个例子意味着里氏代换与通常的数学法则和生活常识有不可混淆的区别。

应当尽量从抽象类继承,而不从具体类继承。

里氏代换原则 (Liskov Substitution Principle, LSP)相关推荐

  1. 软件设计原则(三)里氏替换原则 -Liskov Substitution Principle

    里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一. 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现. LSP是继承复用的基石,只 ...

  2. Java设计模式之里氏替换原则(Liskov Substitution principle)

    2019独角兽企业重金招聘Python工程师标准>>> Java是面向对象的语言,那么什么是面向对象程序设计呢? 面向对象程序设计(英语:Object-oriented progra ...

  3. ABAP设计模式之---“里氏替换原则(Liskov Substitution Principle)”

    1. 定义 子类型必须能够替换掉他们的父类型. 2. 解读 子类可以扩展父类的功能,但不能改变父类原有的功能.也即: a) 子类可以实现父类的抽象方法,但不能覆盖/重写父类的的非抽象方法 b) 子类可 ...

  4. 里氏代换原则C#详解

    看了一大堆的资料讲解关于里氏代换原则,在这里我想分享给大家. 下面这段话来自百度百科,是这么解释里氏代换原则的: 里氏代换原则(Liskov Substitution Principle LSP)是面 ...

  5. 系统设计原则之里氏代换原则

    之前讲述的"开-闭"原则是系统设计的主原则,做到这点是一件很不容易的工作.但是也不是高不可攀的,除此原则以外还有其他的一些设计原则为实现或者说尽可能的达到"开-闭&quo ...

  6. 里氏代换原则——与多态的辩证关系

    ☀里氏代换原则 1.概念:(注意黄色划线部分) 里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一. 里氏代换原则中说,任何基类可以出现的地方 ...

  7. 什么是 里氏代换原则?

    里氏代换原则 里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一. 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现. LSP是继承 ...

  8. 设计模式七大原则-里氏代换原则

    文章目录 一.概念 二.例程 三.代码示例 一.概念 里氏代换原则(Liskov Substitution Principle, LSP):所有引用基类(父类)的地方必须能透明地使用其子类的对象 里氏 ...

  9. 里氏代换原则 举例 分析

    里氏代换原则 定义:里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一. 目的:里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现.L ...

最新文章

  1. Cesium 创建Geometry
  2. [Jmeter系列]Jmeter源码编译步骤(转)
  3. RNQOJ Jam的计数法
  4. CVPR 2018 LSART:《Learning Spatial-Aware Regressions for Visual Tracking》论文笔记
  5. shell常见的文件属性检查
  6. 【竞赛算法学习】学术前沿趋势分析-论文数据统计
  7. 【WinForm】线程中向listview添加数据
  8. linux grep跨行文本匹配,grep跨行匹配
  9. CSS3 新增选择器:伪类选择器和属性选择器
  10. 5.PHP 命令行模式
  11. STM32跑马灯实验蜂鸣器实验按键输入实验NVIC中断优先级管理
  12. 计算机存储器与寄存器的区别,存储器和寄存器的区别
  13. ARM嵌入式核心板介绍
  14. mysql报错不停止继续执行_mysql 8 启动失败(本地计算机上的mysql服务启动后停止。某些服务再未由其他服务或程序使用时将自动停止)...
  15. 自我实现的人的15种心理特征
  16. 零基础如何入门嵌入式领域
  17. 有关振动试验夹具的问题
  18. 火狐浏览器打印时会出现边框线不显示(缩放页面也会出现)
  19. vs2008编译QT开源项目--太阳神三国杀源码分析(二) 客户端添加武将
  20. linux汇编.section与.globl

热门文章

  1. 软件过程与管理学习之:项目计划(Project Schedule)
  2. 21天学会c++(英汉对照,个人翻译,水平有限,供参考)-------第2天
  3. php with函数,string - PHP中的startsWith()和endsWith()函数
  4. Exception和继承自Exception的RuntimeException区别
  5. strcpy和strncpy区别
  6. Android12之fatal error: ‘processinfo/ProcessInfoService.h‘ file not found
  7. BSV 上的 zk-SNARKs
  8. 栈——栈的基本概念和基本操作
  9. CAE-仿真案例学习
  10. 机器学习中正则化的作用