里氏替换原则

15 篇文章 51 订阅 ¥9.90 ¥99.00
里氏替换原则(LSP)确保子类可以替换掉它们的基类而不影响程序的正确性。主要内容包括:子类可以实现父类的抽象方法,但不应覆盖非抽象方法;子类可以增加自身特性;重载时子类方法的前置条件应更宽松,返回值可被缩小。遵循LSP可避免功能扩展导致原有功能故障,保证软件的稳定性和可扩展性。
摘要由CSDN通过智能技术生成

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

指的是任何基类可以出现的地方,子类一定可以出现。

定义1

如果对每一个类型为T1的对象o1,都有类型为T2的对象o2,使得以T1定义的所有程序P在所有的对象o1都替换成o2时,程序p的行为没有发生变化,那么类型T2是类型T1的子类型。

定义2

所有引用基类的地方必须能透明地使用其子类对象。

问题由来

有一功能P1,由类A完成。现需要将功能P1进行扩展,扩展后的功能为P,其中P由原功能P1与新功能P2组成。新功能P由类A的子类B来完成,则子类B在完成新功能P2的同时,有可能会导致原有功能P1发生故障。

解决方案

当使用继承时,遵循里氏替换原则。类B继承类A时,除添加新的方法完成新增功能P2外,尽量不要重写父类A的方法,也尽量不要重载父类A的方法。

里氏替换原则包含了四层含义

1.子类可以实现父类的抽象方法,但是不能覆盖父类的非抽象方法。

实践,以枪为例,看一下类图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CSDN砖家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值