7、深入理解对象组合与类继承:避免继承陷阱的策略

深入理解对象组合与类继承:避免继承陷阱的策略

1. 继承的多面性

在探讨继承之前,有必要明确其确切定义。继承在面向对象编程词汇中是一个神圣的术语,但它包含了多种不同机制。若不明确所指机制,相关讨论很容易产生误导。
- 继承的起源与解释 :若以Simula 67为继承概念的起源,继承包含实现继承、接口继承和可替换性的建立;若以Smalltalk 80为起源,继承仅包含实现继承和接口继承,可替换性并非必需。在不同语言中,对继承的解释也有所不同。例如,在Simula、C++、Java和Component Pascal中,子类应保证可替换性;而在Eiffel中,最初可以取消继承的接口特性,这可能导致子类与父类接口不兼容,完全排除可替换性。
- 继承的三个核心方面
1. 子类化(实现继承) :继承实现片段或代码。
2. 子类型化(接口继承) :继承契约片段或接口。
3. 可替换性承诺

在讨论继承的利弊时,这三个方面常被忽略或未清晰区分,可能是由于“反对者”与“混合者”之间的非理性讨论,或者是原教旨主义者/纯粹主义者与技术专家/实用主义者之间的分歧。

2. 实现继承的多种形式

实现继承有多种形式,下面介绍两种重要的形式。
- 多重继承
- 多重继承的动机 :支持多重继承主要有两个原因。一是合并不同来源的接口,以实现与不同上下文中定义的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值