看了看《大话设计模式》这本书,写的感觉太棒了,例子通俗易懂,简单的对话引出设计模式的例子。

里氏代换原则(LSP):子类必须能够替换掉他的父类[ASD]

子类继承了父类,所以子类可以以父类的身份出现!

那么问题来了,面向对象设计时,一个鸟类,一个企鹅类,鸟类中有一个   +飞()的方法,那么企鹅可以继承鸟这个类吗?

按照常识来说,企鹅是特殊的鸟,虽然不会飞也是鸟,所以可以继承!!

但是,这是错的,子类拥有父类所有非Private的行为和属性。鸟会飞,而企鹅不会,尽管在生物学上企鹅是鸟,但是在这个例子中,企鹅是不能继承这个鸟类的,因为企鹅不会飞,所以它在这里不能以父类的身份出现,除非企鹅会飞,才能去继承!!

里氏代换原则(企鹅是不是鸟!)相关推荐

  1. java设计模式之设计原则⑥里氏代换原则

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

  2. 大话设计模式三之单一职责原则、开放-封闭原则、依赖倒置原则、里氏代换原则

    单一职责原则 单一职责原则(SRP),意思就是说,功能要单一.准确解释是,就一个类而言,应该仅有一个引起它变化的原因. 如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或 ...

  3. 北风设计模式课程---里氏代换原则

    北风设计模式课程---里氏代换原则 一.总结 一句话总结: 视频教程网上一定能找到做好笔记的博客,很大几率都不需要自己做笔记.比如北风设计模式课程,https://www.cnblogs.com/xi ...

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

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

  5. JAVA设计原则:里氏代换原则

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

  6. Java设计模式之二十八(里氏代换原则)

    一.什么是里氏代换原则 里氏代换原则(Liskov Substitution Principle):一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它察觉不出父类和子类对象的区别.也就 ...

  7. 设计模式—六大原则—里氏代换原则

    里氏代换原则(Liskow-Substitution-Principle) 定义:子类对象能够替换父类对象,而程序逻辑不变. ​ 里氏替换原则是确保继承正确使用的方法(继承使用的要求条件). ​ Li ...

  8. 软件设计原则——里氏代换原则

    里氏代换原则 里氏代换原则是面向对象设计的基本原则之一. 里氏代换原则:任何基类可以出现的地方,子类一定可以出现. 通俗理解:子类可以扩展父类的功能,但不能改变父类原有的功能. 换句话说,子类继承父类 ...

  9. 设计原则 单一职责原则、开放封闭原则、依赖倒置原则、里氏代换原则、迪米特法则

    目录 1 单一职责原则 2 开放封闭原则 3 依赖倒置原则 4 里氏代换原则 5 迪米特法则 1 单一职责原则 比如:电脑内存坏了就应该更换内存,不应该更换CPU (内存负责内存.CPU负责CPU) ...

  10. 【设计模式】五:依赖倒置与里氏代换原则

    /** * 依赖倒转原则 * 定义: 抽象不应该依赖细节,细节应该依赖于抽象 * 解释:开发过程中,要学会针对接口编程,不要针对需求进行编程 * 特征: * 高层模块不应该依赖低层模块,两个都应该依赖 ...

最新文章

  1. Git HEAD 意思详解 和版本回退
  2. 企业网络推广专员浅析企业网络推广后期网站优化重点因素有哪些?
  3. 2022考研 【理工专场讲座(新政策分析、专业分析、复习建议)】
  4. lc滤波器是利用电感的感抗_电感知识
  5. IsNull 和 SQL语句中CASE WHEN用法
  6. 出这样的题,出题人的良心确定不会痛吗?
  7. 54 FI配置-财务会计-固定资产-主数据-更改评估组的关键词
  8. 7-42 关于堆的判断 (25 分)
  9. 获得显示器设置的分辨率
  10. php 和bootstrap,bootstrap4和bootstrap3的区别是什么
  11. node.js查询oracle,nodejs操作oracle数据库示例
  12. 分析lammps文件_LAMMPS学习系列(24)
  13. 深度学习入门——波士顿房价预测
  14. 《大数据之路:阿里巴巴大数据实践》-第1篇 数据技术篇 -第6章 数据服务
  15. android root写入文件,android中root用户无法往某些目录写入文件解决方法
  16. android:kotlin语言开发再也不用findViewById与ButterKnife
  17. AT89C51(Atmel)芯片制作简易的频率计
  18. 蓝桥杯——青蛙过河(JAVA)
  19. Bootstrap简单网页制作
  20. group by的一点小说明

热门文章

  1. Druid未授权访问利用
  2. 计算机系统:计算机系统的基本组成
  3. 大多数人奋斗一辈子才能得到的东西,你见过吗?
  4. 将前端传过来的base64加密图片保存到本地,并且判断来自于哪个终端
  5. 846计算机类,x846-《计算机类学科基础》考试内容及范围(8页)-原创力文档
  6. JS 的内联模式与外联模式
  7. pipe 半双工_linux进程间通信之管道(无名管道pipe)实现全双工双向通信
  8. database link问题解决
  9. Python数据可视化:平凡的世界
  10. web第六课:div标签和span标签