软件构造——学习笔记4

本文探讨了Java学习中的重要概念——里氏代换原则(LSP),它是面向对象设计的基础。LSP强调子类可以替换其基类而不影响程序的正确性。同时,文章解释了协变和逆变的概念,协变涉及返回值的细化,而逆变则与参数类型有关。通过具体的例子,作者阐述了这些原则如何影响代码的可读性和可维护性,并提到了REP、AF和RI等概念,这些都是软件设计中的关键原则。
摘要由CSDN通过智能技术生成

这次分享着重分享一下自己对java学习中一些小知识点的理解

lsp原则:
面向对象设计原则之一,主要内容:
原则中说,任何基类可以出现的地方,子类一定可以出现。 LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。里氏代换原则是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。而基类与子类的继承关系就是抽象化的具体实现,所以里氏代换原则是对实现抽象化的具体步骤的规范。
简要概括为:
(1)子类型可以增加方法,但是不可以删除基类的方法,子类型需要实现抽象类型中的所有未实现方法
(2)当子类覆盖或实现父类的方法时,方法的返回值要比父类更严格。
(3)当子类覆盖或实现父类的方法时,方法的形参要比父类更为宽松。
(4)子类型中重写方法不能抛出额外的异常

协变:
简要理解为更具体,主要应用在返回值更具体,异常更具体
例子:
![在这里插入图片描述](https://img-blog.csdnimg.cn/dcdef31b2ac74f00af5e74f72cf8977b.p

逆变:
主要体现在参数不变或者涵盖范围更广。(java不支持逆变,如果去掉@override会视为重载)
例子:在这里插入图片描述

REP:
类的内部表示属性
AF:
表示空间到抽象空间的映射,可以为单射,双射,多射,且一定为满射。
RI:
表示不变量,规定rep符合某种规则

白盒框架:
主要利用继承实现
黑盒框架:
主要利用委托组合实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值