结合面向对象设计原则分析正方形是否为长方形的子类

关于父类与子类,看了看面向对象的设计原则,其中里氏代换原则提到关于父类与子类:所用引用基类的地方必须透明地使用其子类的对象。老师也反复强调,其实就是基类的类型可以接受子类的实例,也不多讲,觉得越讲反而会越糊涂。

长方形和正方形的区别在于正方形的长和宽是相等的。如果不假思索认为正方形是长方形的子类,那么老师也没要出题的意义了。按里氏代换原则如果一个方法需要调用长方形,那么我给他传一个正方形也可以。如果一个方法为了看长方形的宽增长,直至宽大于长则停止,传一个正方形这个方法就不会正常终止。

所以,正方形不是长方形的子类。

结合面向对象设计原则分析正方形是否为长方形的子类相关推荐

  1. 结合面向对象设计原则分析:正方形是否是长方形的子类?

    在面向对象编程中,正方形和长方形都可以作为一个类来实现.但是,是否可以说正方形是长方形的子类呢? 根据里氏替换原则(Liskov Substitution Principle),子类应该可以完全替代父 ...

  2. java设计模式 课后习题参考答案 第 2 章 面向对象设计原则 清华出版社 刘伟

    第 2 章 面向对象设计原则 B A C D D C C D D "封装变化点"可对应"开闭原则","对接口进行编程"可对应"依赖 ...

  3. 万字长文,精讲面向对象设计原则,一起练内功

    本文摘Robert C Martion <架构整洁之道> 在我们追逐互联网高并发技术时,应该提前打好基础.面向对象设计原则是成为架构的必由之路,通读此文,反复咀嚼,定会受益无穷. 通常来说 ...

  4. uml图中的各种箭头_设计模式学习笔记(二):UML与面向对象设计原则

    1 UML 1.1 UML UML(Unified Modeling Language)是统一建模语言,1997年11月UML1.1版本提交给OMG并正式通过,成为建模语言的个那个也标准.2003年6 ...

  5. 技术图文:01 面向对象设计原则

    01 面向对象设计原则 知识结构: 一碟开胃的小菜 小菜今年计算机专业大四了,学了不少软件开发方面的东西,也学着编了些小程序,踌躇满志,一心要找一个好单位.当投递了无数简历后,终于收到了一个单位的面试 ...

  6. 程序员必备的七大面向对象设计原则(三)

    五.接口隔离原则 1. 定义 i.  客户端不应该依赖那些它不需要的接口. ii.  一旦一个接口太大,则需要将它分割成一些更细小的接口,使用该接口的客户端仅需知道与之相关的方法即可. 2.分析 i. ...

  7. C++面向对象设计原则详解

    概述 C++面向对象设计原则主要包括以下几点: 依赖倒置原则 开放封闭原则 单一职责原则 里氏替换原则 接口隔离原则 封装变化点原则 面向接口编程原则 优先使用对象组合,而不是类继承 接下来详细的分析 ...

  8. 面向对象设计原则OO

    面向对象设计原则是OOPS(Object-Oriented Programming System,面向对象的程序设计系统)编程的核心,但大多数Java程序员追逐像Singleton.Decorator ...

  9. Java面向对象设计原则

    面向对象设计原则是OOPS(Object-Oriented Programming System,面向对象的程序设计系统)编程的核心,但大多数Java程序员追逐像Singleton.Decorator ...

  10. 设计模式---面向对象设计原则之单一职责原则

    单一职责原则是最简单的面向对象设计原则,它用于控制类的粒度大小.单一职责原则定义如下: 单一职责原则(Single Responsibility Principle, SRP):一个类只负责一个功能领 ...

最新文章

  1. python常用字符大全_python字符串,列表,字典,集合的常用方法
  2. 黑盒测试实践(小组作业)每日例会记录——11.27
  3. 人脑意识转入量子计算机,人脑产生意识:可能是因为量子纠缠
  4. Java多线程(六)——多线程的阻塞队列
  5. 服务器虚拟化的毕业设计,云桌面技术研究与应用毕业设计论文+开题报告+翻译+源码...
  6. HTTP 连接管理进化论
  7. Ubuntu 18.04 中Chrome浏览器安装与使用
  8. MTK平台修改Bootloader源代码,让Android设备一通电就自动开机
  9. 转载:破解DR.COM实现共享上网方法大搜罗(抱歉,直接转载
  10. 小蓝本 第一本《因式分解技巧》 第一章 提公因式 笔记(第一天)
  11. 2015Astar百度之星初赛 1001 超级赛亚ACMer
  12. 前端学习路线(前端零基础)
  13. js根据IP地址获取当前的省市
  14. cas:337526-88-2 ;Ir(bt)2 (acac),齐岳提供金属配合物材料
  15. vue中使用数组方法push
  16. 蔡萍:深耕半导体行业二十年,复旦MBA“朋友圈”成智囊团
  17. 未定义数组索引:prepay_id
  18. 亚马逊测评现在还能做吗?需要注意哪些?
  19. 关于地图GIS开发事项的一次实践整理(上)
  20. 塔望·食业研究丨方便速食行业市场主要竞争品牌分析及研究

热门文章

  1. AI如何修改画布尺寸? ai怎么设置画布大小_AI教程自学网
  2. Permutation 和 Combination
  3. 万有引力的意思_详细解释万有引力的本质 - 物理 - 小木虫 - 学术 科研 互动社区...
  4. Cocoa Touch框架浅析
  5. 学习笔记五(蜂鸣器实验按键输入实验)
  6. VOCs废气处理设备-粤信环保
  7. 并发编程之:Atomic
  8. Hubstudio指纹浏览器和MaxProxy代理的配置教程
  9. 无线渗透笔记(二)-《使用Aircrack-ng破解握手包》
  10. 计算机网络研究方向和网络安全问题