java设计模式之设计原则⑥里氏代换原则
定义:
(1)一个软件实体如果使用的是一个父类的话,那
么一定适用于其子类,而且它察觉不出父类和子
类对象的区别。也就是说,在软件里面,把父类
替换成它的子类,程序的行为没有变化。
(2)一个软件实体如果使用的是一个子类的话,那
么它不能适用于其父类。
里氏代换原则就是使用父类的地方就可以传递子类。
以下通过案例进行理解里氏代换原则:
首先创建一个父类Person,写一个display方法
创建一个子类Man继承了Person这个类,重写其display方法
创建一个MainClass测试类,里面写一个main启动方法,写一个display方法,参数是Person这个对象,方法中调用person的display方法。
运行结果如下
对于里氏代换原则的定义来说就是我们测试类MainClass中调用display方法可以将父类换成子类如下:
这其实就是多态,就是方法参数是父类,我们用多态的形式传递其子类对象进去,也是成立的。
但是反过来如果方法的参数是子类对象,我们就不可以传递父类对象。
案例二:
创建一个Bird鸟 接口,有个方法fly飞
创建一个类 老鹰 实现了Brid接口。
创建一个麻雀类 实现了Brid接口
但是这个时候如果是企鹅的话,它实现了鸟类这个接口,但它不会飞
创建一个MainClass测试类,main方法和fly方法
测试发现企鹅就不会飞,所以企鹅不能实现鸟类的接口。
java设计模式之设计原则⑥里氏代换原则相关推荐
- 软件设计原则——里氏代换原则
里氏代换原则 里氏代换原则是面向对象设计的基本原则之一. 里氏代换原则:任何基类可以出现的地方,子类一定可以出现. 通俗理解:子类可以扩展父类的功能,但不能改变父类原有的功能. 换句话说,子类继承父类 ...
- 面向对象五大设计原则-里氏代换原则
1.里氏代换原则 里氏代换原则(Liskov Substitution Principle)是指,任何基类出现的地方,子类一定可以出现.反之则不一定成立. 通俗的讲便是:"老鼠儿子会打洞&q ...
- Java设计模式之设计的6大原则(开闭原则,里氏代换原则,依赖倒转原则,接口隔离原则,最少知道原则,合成复用原则)
1. 开闭原则 核心思想:一个对象对外扩展开发,对修改关闭 意思就是:对类的改动是通过增加代码进行的,而不是修改现有的代码. 也就是说软件开发人员一旦写出了可以运行的代码,就不应该去改动它,而是要保证 ...
- Android大话设计模式 第四章----里氏代换原则----法海捉拿白蛇新解
应用场景举例: <白蛇传>是中国四大民间传说之一,妇孺皆知. 在大多数人的感觉和印象中,白蛇是一个善良痴情.知恩图报.温柔友善.美貌绝伦.冰雪聪明.明辨是非.救苦救难的活菩萨:而法海却是一 ...
- 设计模式七大原则-里氏代换原则
文章目录 一.概念 二.例程 三.代码示例 一.概念 里氏代换原则(Liskov Substitution Principle, LSP):所有引用基类(父类)的地方必须能透明地使用其子类的对象 里氏 ...
- 设计模式—六大原则—里氏代换原则
里氏代换原则(Liskow-Substitution-Principle) 定义:子类对象能够替换父类对象,而程序逻辑不变. 里氏替换原则是确保继承正确使用的方法(继承使用的要求条件). Li ...
- Java里氏转换_详解Java设计模式编程中的里氏替换原则
定义1:如果对每一个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T1定义的所有程序 P 在所有的对象 o1 都代换成 o2 时,程序 P 的行为没有发生变化,那么类型 T2 是类型 ...
- Java设计原则之单一职责原则、开闭原则、里氏代换原则
文章目录 面向对象设计原则概述 单一职责原则 开闭原则 里氏代换原则 面向对象设计原则概述 软件的可维护性(Maintainability)和可复用性(Reusability)是两个非常重要的用于衡量 ...
- 里氏代换原则在Java以及设计模式中的体现
里氏代换原则在Java中的体现 前面说了里氏代换原则,那么现在说一下里氏代换原则在Java中的使用. 里氏代换原则要求父类类型可以使用的,那么子类一定可以适用.因此子类必须具有基类的全部接口,并且可 ...
最新文章
- 二阶声波正演c语言程序_嵌入式开发中的三种程序构架
- SAP HUM 没有搬到Storage Type 923的HU能用HU02拆包?
- C++并发编程线程间共享数据std::future和sd::promise
- 2020-11-24
- C/C++开发游戏项目之《智能图形界面-贪吃蛇》
- otc焊接机器人操作规范_「分享」超声波塑料焊接机的操作规范
- Spark:Yarn-cluster和Yarn-client区别与联系
- 履带机器人动力总成_工业机器人在动力总成工厂智能化提升中的应用
- html真实雾效果图,HTML5 Canvas图片上云雾弥漫驱散特效
- C语言小知识---递归函数的使用
- 焦虑症患者,整天心神不宁,忧心忡忡怎么办?
- 将相同值的行内容进行合并操作--Sql2005
- 谷粒商城:10.商品服务 — 属性分组
- android: PendingIntent的使用
- 信息系统集成企业该具备的资质您有几个呢?
- cmd查看当前python安装路径_python环境配置
- ubuntu 移动硬盘复制小文件可以,复制大文件总是复制不成功
- 群晖 android软件,群晖-手机端常用App
- clk_get_rate函数
- Log与logcat