里氏替换原则与多态的区别

设计模式 之 里氏替换原则 里氏替换原则的定义有: 如果对每一个类型为T1的对象o1,都有类型为T2的对象o2,使得以T1定义的所有程序P在所有的对象o1都替换成o2时,程序P的行为没有变化,那么类型T2是类型T1的子类型。 定义很完备,但也不太好理解。说白了,其实就是使用到父类的地方都可以完全的替换成它的某个子类,而整个程序的运行不受任何影响。也就是说,使用父类对象调用某个成员方法,和使用其某个子类对象调用同名的成员方法,在逻辑上和结果上都需要是等价的。 这规定了,继承父类的子类,必须完完全全,不打折扣的支持父类的方法。 子类兼容父类 这条原则,是面向对象中多态的基石。在程序设计时,我们常以父类的引用来接接受某个子类 立即下载

什么是里氏替换原则

英文:Liskov Substitution Principle 缩写 LSP。中文解释:子类对象能够替换程序中的父类对象,且不会改变父类的行文。

多态

定义:父类引用可以指向子类实例,子类重写或者继承父类的全部方法。

例子说明

如果一个父类提供了提现的函数,且函数定义为账户余额不能小于等于0,但是根据用户分类的不同,可能存在vip用户继承了此父类,重写了体现函数,允许用户透支部分金额即可以在余额小于0时进行提现,则此时的子类提现行为对于父类来说改变了,此时违反了里氏替换原则,但还是多态。开发中常用判断是否是里氏替换原则的方式是单元测试:子类能通过父类的所有单元测试。

【扫地机器人】详细介绍扫地机器人软硬件测试和场景化测试 本文提出2025版扫地机器人全生命周期测试方案,涵盖实验室仿真、硬件台架、客户实景等全流程验证。测试以"清洁率≥95%、覆盖率≥98%、MTBF≥1000h"为核心指标,采用数字孪生与120套真实场景结合的双V模型。重点包括:传感器精度(LDS误差<±10mm)、清洁系统性能(10g粉尘吸入率≥99%)、动力续航(800次循环容量保持≥80%)等硬件测试;以及SLAM重定位(误差<5cm)、AI识别(mAP>92%)等软件验证。方案特别针对宠物家庭(毛发缠绕率≤3%)、 阅读详情

相关推荐

ENVI+SARscape实战:从哨兵一号数据到地震形变制图全流程解析

本文详细解析了使用ENVI和SARscape软件从哨兵一号数据生成地震形变图的全流程,包括数据获取、干涉处理、相位解缠等关键步骤。通过实战技巧和参数设置建议,帮助用户高效处理SAR数据,提升地震形变监测的精度和可视化效果。

weixin_30460489的博客 385

设计原则:里式替换原则(LSP)

系列文章 设计原则:单一职责(SRP) 设计原则:开闭原则(OCP) 设计原则:里式替换原则(LSP) 设计原则:接口隔离原则(ISP) 设计原则:依赖倒置原则(DIP) 何谓高质量代码? 理解RESTful API 1 定义 里氏原则的英文是Open Closed Principle,缩写就是OCP。其定义有两种 定义1: If S is a subtype of T, then objec...

yufaxingxing的博客 1141

Linux实战:rMATS可变剪切分析从零到一,避坑指南与结果深度解析

本文详细介绍了在Linux系统上从零开始部署rMATS进行可变剪切分析的完整流程,包括环境搭建、安装避坑指南、参数优化及结果解读。特别针对gfortran依赖、数学库配置等常见问题提供解决方案,并深入解析JC与JCEC结果的差异及可视化技巧,帮助生物信息学研究者高效完成可变剪切分析。

weixin_30394669的博客 409

里式替换(LSP)跟多态有何区别?哪些代码违背了LSP?

在上两节课中,我们学习了 SOLID 原则中的单一职责原则和开闭原则,这两个原则都比较重要,想要灵活应用也比较难,需要你在实践中多加练习、多加体会。今天,我们再来学习 SOLID 中的“L”对应的原则:里式替换原则。 整体上来讲,这个设计原则是比较简单、容易理解和掌握的。今天我主要通过几个反例,带你看看,哪些代码是违反里式替换原则的?我们该如何将它们改造成满足里式替换原则?除此之外,这条原则从定义上看起来,跟我们之前讲过的“多态”有点类似。 所以,我今天也会讲一下,它跟多态的区别。话不多说,让我们正式开始今

zhujiangtaotaise的专栏 420

在WinXP操作系统上安装Tornado2.2详细教程

使用VxWorks的人都想在自己的电脑中装VxWorks的编译器Tornado,然而Win10操作系统对于Tornado并不友好,根本装不成功。而对于Win7操作系统,之前在实验室一台Win7上装Tornado成功过,并且一直在上面进行vx开发,但是过一段时间在其他Win7上装Tornado时又不能成功,由此说明Tornado对于Win7操作系统对Tornado的兼容也不是很好,所以想要长久使用T...

weixin_43822311的博客 4481

数字IC后端实现 | Innovus各个阶段常用命令汇总

数字IC后端设计实现之Innovus常用命令汇总

weixin_37584728的博客 7323

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

☀里氏代换原则 1.概念:(注意黄色划线部分) 里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。 LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。里氏代换原则是对“开-闭”原则的补...

LuM523的博客 976

有关SPSS中Fisher精确检验无法进行的解决方法(由于无法打开临时文件,因此无法进行计算)

最近在帮一个四年生完成她的毕业论文,在用SPSS进行R×C表检验的时候,发现Fisher精确检验的结果无法显示,提示为“由于无法打开临时文件,因此无法进行计算”,大概像下图一样。 (这图是从网上找的) 然...

chuyang37的博客 3万+

设计原则之【里氏替换原则】

子类对象(object of subtype/derived class)能够替换程序(program)中父类对象(object of base/parent class)出现的任何地方,并且保证原来程序的逻辑行为(behavior)不变及正确性不被破坏。实现多态的条件: 1.继承:必须要有子类继承父类的继承关系。 2.重写:子类需要对父类中的一些方法进行重写,然后调用方法时就会调用子类重写的方法而不是原本父类的方法。 3.向上转型:在多态中需要将子类的引用赋给父类对象,只有这样该引用才能够具备技能调用父类

秃了也弱了 1210

Bash Shell 系统巡检脚本

部分安全相关检查需要root权限,建议通过sudo运行完整检查。

老韩的Linux云计算架构师进阶之路 96

全球APN信息汇总

全球APN信息,电信APN,移动APN,联通APN,台湾APN,马来西亚APN,俄罗斯APN,日本APN,泰国APN,美国APN,英国APN,法国APN,德国APN,意大利APN,葡萄牙APN,土耳其APN,荷兰APN,丹麦APN,比利时APN,爱尔兰APN,新加坡APN,越南APN,老挝APN,菲律宾APN,印尼APN,泰国APN,柬埔寨APN,巴基斯坦APN,印度APN,奥地利APN,保加利亚APN,捷克APN,立陶宛APN,罗马尼亚APN,挪威APN,希腊APN,匈牙利APN,瑞士APN,乌克兰APN

renkai721的专栏 2796

深入理解多态

里氏替换原则 我们知道子类对象可以赋给父类对象,也可以说子类对象可以完全替换父类对象并出现在父类对象可以出现的任何地方,且程序的行为不会发生改变,但反过来父类对象是不能替换子类对象的!比如汽车类对象就不能替换卡车类对象(虽然卡车也是汽车),因为汽车包含的范围比卡车要大,它也可以是私家车! 这种特性就被称为“里氏替换原则(Liskor Substiution Principle)”。 里氏替换...

weixin_30538029的博客 132

SAP 52策略测试简介

我们看下下层物料的需求,可以看到物料的需求已经跑出来了,我们双击计划订单,发现是没有办法将计划订单转换为采购申请的,这里是否还记得我们在前面创建主数据的时候独立集中我们填写的是1,所以物料继承了上层物料的策略,所以不能将计划订单进行转换。我们在前面测试了50策略按单生产,创建完计划独立需求后,通过主数据中的独立集中的字段控制下层物料是否能通过计划订单转成生产订单和采购订单。可以看到下层物料的计划订单就可以转采购申请了,到这里可以看到52策略和50策略的计划独立需求完全是一样的。

我小时候很黑的博客 1272

SOLID设计原则之LSP ---里氏替换与多态有何区别?

LSP定义: 子类对象(object of subtype/derived class)能够替换程序(program)中父类对象(object of base/parent class)出现的任何地方,并且保证原来程序的逻辑行为(behavior)不变及正确性不被破坏。 其实还是对扩展开放,对修改关闭。 LSP与多态的区别? 多态是面向对象编程的一大特性,也是面向对象编程的一种语法,是代码实现的一种思路。 LSP是一种设计原则,用来指导继承关系中子类该如何设计,子类的设计要保证在替换父类的时候,不改变原有程

u013804856的博客 4367

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

里式替换(LSP)跟多态有何区别?

在上两节课中,我们学习了 SOLID 原则中的单一职责原则和开闭原则,这两个原则都比较重要,想要灵活应用也比较难,需要你在实践中多加练习、多加体会。今天,我们再来学习 SOLID 中的“L”对应的原则:里式替换原则。 整体上来讲,这个设计原则是比较简单、容易理解和掌握的。今天我主要通过几个反例,带你看看,哪些代码是违反里式替换原则的?我们该如何将它们改造成满足里式替换原则?除此之外,这条原则从定义上看起来,跟我们之前讲过的“多态”有点类似。所以,我今天也会讲一下,它跟多态的区别。 如何理解“里式替换原则”?

鸭梨的博客 536

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

设计原则—SOLID(LSP)

Liskov Substitution Principle,缩写为 LSP。这个原则最早是在 1986 年由 Barbara Liskov 提出 子类对象(object of subtype/derived class)能够替换程序(program)中父类对象(object of base/parent class)出现的任何地方,并且保证原来程序的逻辑行为(behavior)不变及正确性不被破坏。 里式替换原则还有另外一个更加能落地、更有指导意义的描述,那就是“Design By Contrac“

3万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

史无前例的设计模式-里氏替换原则

编程界的小学生一、概念二、案例三、和多态的区别 一、概念 里氏替换原则:Liskov Substitution Principle,检查LSP。子类对象能够替换程序中父类对象出现的任何地方,并能保证替换完后程序的逻辑行为不变以及替换前后的逻辑语义和结果正确性不被破坏。 例如:父类逻辑是a+b,子类逻辑是a-b,参数和返回都一样,但是逻辑变了,这就不符合里氏替换原则。逻辑语义和结果的正确性得到了破坏...

【原】编程界的小学生 484

设计原则--里氏替换原则

哪些代码是违反里氏替换原则的? 如何将代码改造成满足里氏替换原则? 里氏替换原则和多态的区别? 相比其他的设计原则,里氏替换原则还是比较简单,比较容易理解和掌握的。 里氏替换原则,英文名Liskov Substitution Principle,缩写LSP。子类对象能够替换程序中父类对象出现的任何地方,并且保证原有程序的逻辑行为不变,及正确性不发生改变。 看到这里是不是觉得多态和里氏替换原则有点相似呢?先进一步解读里氏替换原则,然后再区分二者得区别。实际上,里氏替换原则还有一个更加落地,更有.

铭 533

【设计模式之旅】10|设计原则之里式替换原则(LSP)

前言:前面我们介绍了 SOLID 原则中的单一职责原则和开闭原则,这两个原则都比较重要,想要灵活应用也比较难,需要你在实践中多加练习、多加体会。今天,我们再来聊聊SOLID 中的“L”对应的原则:里式替换原则。整体上来讲,这个设计原则是比较简单、容易理解和掌握的。今天我主要通过几个反例,带你看看,哪些代码是违反里式替换原则的?我们该如何将它们改造成满足里式替换原则?除此之外,这条原则从定义上看起来,跟我们之前讲过的“多态”有点类似。所以,我今天也会讲一下,它跟多态的区别。 如何理解里式替换原则? ..

qq_29819209的博客 271

可能是最好的设计模式入门教程——里氏替换原则

里氏替换原则(Liskov Substitution Principle,LSP)是面向对象设计(OOD)中比较重要、常见的一种,下面来总结里氏替换原则的知识点,包括: 维基百科定义 在面向对象的程序设计中,里氏替换原则(Liskov Substitution principle)是对子类型的特别定义。它由芭芭拉·利斯科夫(Barbara Liskov)在1987年在一次会议上名为“数据的抽象与...

JavaEdge全是干货的技术号 1978

设计模式之美17-理论三:里式替换(LSP)跟多态有何区别?哪些代码违背了LSP?

在上两节课中,我们学习了SOLID原则中的单一职责原则和开闭原则,这两个原则都比较重要,想要灵活应用也比较难,需要你在实践中多加练习、多加体会。今天,我们再来学习SOLID中的“L”对应的原则:里式替换原则。整体上来讲,这个设计原则是比较简单、容易理解和掌握的。今天我主要通过几个反例,带你看看,哪些代码是违反里式替换原则的?我们该如何将它们改造成满足里式替换原则?除此之外,这条原则从定义上看起来,跟我们之前讲过的“多态”有点类似。所以,我今天也会讲一下,它跟多态的区别。

fegus的博客 213

17 | 理论三:里式替换(LSP)跟多态有何区别?哪些代码违背了LSP?

Liskov替换原则(LSP)是SOLID原则之一,指导面向对象设计中的继承关系。该原则强调,子类在替换父类时,应保持程序逻辑行为的一致性和正确性。文章通过实例详细解释了LSP的概念,并指出了几种违反LSP的代码情形。LSP的核心是“按协议设计”,即子类可以改变函数的实现,但不能改变父类定义的行为约定。同时,文章还区分了LSP与多态,强调LSP是设计原则,而多态是实现方法。总之,LSP指导子类设计,确保替换父类时不改变程序逻辑或破坏正确性。

想起来就更新 659

《设计模式之美》理论三:里式替换(LSP)跟多态有何区别?哪些代码违背了LSP?

王争《设计模式之美》学习笔记 如何理解“里式替换原则”? 里式替换原则的英文翻译是:Liskov Substitution Principle,缩写为 LSP。 子类对象(object of subtype/derived class)能够替换程序(program)中父类对象(object of base/parent class)出现的任何地方,并且保证原来程序的逻辑行为(behavior)不...

玲珑巫女的学习笔记 698

设计原则之里氏替换原则--子类可以替换父类吗

设计原则之里氏替换原则–子类可以替换父类吗 里氏替换原则(Liskov Substitution Principle)LSP,这个原则是说子类应该可以替换父类进行使用。 这个原则的英文描述是functions that use pointers of references to base classes must be able to use objects of derived classes ...

大头讲架构的博客 2429

17 | 理论三:里式替换(LSP)跟多态有何区别?哪些代码违背了 LSP?

子类对象能够替换程序中父类对象出现的任何地方,并且保证原来程序的逻辑行为不变及正非确性不被破坏。父类定义了函数的行为约定,那子类可以改变函数的内部实现逻辑,但不能改变函数原有的行为约定。子类的设计要保证在替换父类的时候,不改变原有程序的逻辑以及不破坏原有程序的正确性。甚至包括注释中所罗列的任何特殊说明。哪些代码是违反里式替换原则的?子类有设计的时候,要遵守父类的。,也是面向对象编程语言的一种。里式替换原则和多态的区别。对输入、输出、异常的约定;,是面向对象编程的一大。函数声明要实现的功能;

Balance 455

七大设计原则之里氏替换原则

里氏替换原则,英文叫LiskovSubstitutionPrinciple,简称LSP(老色皮,哈哈)。里氏替换原则,其实是没有我们前面,说的SRP和OCP比较见名知意一些。根据他们两个的中文名称,我们都很容易联想到他的定义。比如,单一职责原则,就是一个类或者模块只负责一个职责。而开闭原则,根据名字,我们也不难得知其定义就是,对扩展开发,对修改关闭。然而,里氏替换原则,根据名称,我们却难以得知其到底有何含义。里氏替换,其实重点就在后面的替换两字。

胜人者有力,自胜者强! 1823
上一篇: spring-cloud-kubernetes-feign实战
下一篇: arthas一次方法追踪记录
li_a_long
博客等级 码龄9年 1粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值