Liskov Substitution Principle简称LSP,是里氏代换原则。

由美国第一位计算机科学方向的女博士,2008年图灵奖获得者——Barbara Liskov提出,是面向对象最重要的几大原则之一。

它规定制约了一个类的子类型。其在编程语言中,主要依靠以下约束:

1.子类型的前置条件不能强化

2.子类型的后置条件不能弱化

3.不变量要保持

4.子类型方法的参数:逆变

5.子类型方法的返回值:协变

6.异常类型:协变

由此可知上图中Square不是Rectangle满足LSP的子类。

其中要注意到Java不支持逆变,会将其看作重载。

Liskov Substitution Principle相关推荐

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

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

  2. 北风设计模式课程---里氏替换原则(Liskov Substitution Principle)

    北风设计模式课程---里氏替换原则(Liskov Substitution Principle) 一.总结 一句话总结: 当衍生类能够完全替代它们的基类时:(Liskov Substitution P ...

  3. 里氏代换原则 (Liskov Substitution Principle, LSP)

    里氏代换原则 (Liskov Substitution Principle, LSP) 定义严格表达: 如果对每一个类型为T1的对象O1,都有类型为T2的对象O2,使得以T1定义的所有程序P在所有的对 ...

  4. 里氏代换原则(The Liskov Substitution Principle)

    里氏代换原则由Barbara Liskov于1988年提出,它最开始的定义如下: If for each object o1 of type S there is an object o2 of ty ...

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

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

  6. Liskov替换原则(Liskov Substitution principle)

    1 定义 子类型(subtype)必须能够替换掉他们的基类型(base type).Barbara Liskov首次写下这个原则是在1988年.她说道:       这里需要如下替换性质:若对每个类型 ...

  7. 里氏替换原则(Liskov Substitution Principle,LSP)

    昨天图文介绍了软件设计的一个基本原则"开闭原则",而"开闭原则"的核心就是通过抽象把需求变化进行隔离,这种想法可以通过"里氏替换原则"进行保 ...

  8. 深入浅出设计模式原则之里氏代换原则(Liskov Substitution Principle)

    下面以"几维鸟不是鸟"为例来说明里氏替换原则(程序源码). #include <QCoreApplication> #include <iostream>/ ...

  9. 里氏代换原则(Liskov Substitution Principle)

    作用 它指导我们如何正确地进行继承与派生,并合理地重用代码! 定义 子类型必须能够替换掉它们的父类型.并出现在父类能够出现的任何地方. 这个就是尽量用多态的方法编程,也就是GRASP模式中的多态. 如 ...

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

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

最新文章

  1. ASP.NET Core 中的 startup类
  2. C语言字符串相关一级指针内存模型
  3. Markdown常用转义字符
  4. 小菜鸟装VM之后装linux
  5. @Resource kdown
  6. 10.Shell 编程从入门到精通 --- 超级工具(shell,ssh,screen,vim)
  7. Microsoft 安全公告 MS12-020 - 严重。请大家关注!!
  8. linux怎样使用小米线刷工具,小米线刷工具推荐及使用教程
  9. 微观经济学(第一课)笔记
  10. ROP攻击:Challenge 0x14: Horcruxes
  11. windows使用DD刻录工具刻录U盘
  12. itest听力答案2020_大学英语itest2018答案
  13. Android设置WebView背景色
  14. Python爬虫-js案例-上海法院网
  15. 计算机链接局域网,window7连接局域网的方法
  16. WSL2 更换硬盘位置
  17. 物联网项目开发实战案例
  18. [读书总结]大数据时代
  19. 怎么把图片缩小尺寸,缩小图片尺寸方法
  20. 2021十大杰出现货黄金交易平台排名

热门文章

  1. USB总线-Linux内核USB3.0控制器初始化代码分析(三)
  2. 【Codecs系列】码率控制之VBV实现原理
  3. 文献笔记:Plasmonic metagratings for simultaneous determination of Stokes parameters
  4. authc过滤器 shiro_shiro原理之过滤器
  5. c语言中switch语句流程图_C语言程序设计程序流程结构
  6. Java——哈希值是什么?
  7. Error parsing column 33
  8. 基于蓝墨云班课的翻转课堂实践
  9. c语言定时器1khz占空比,555定时器产生方波原理(四款555定时器产生方波的电路详解)...
  10. 惠普计算机电源怎么设置充电,HP笔记本的三芯电源怎么改二芯实现充电?