对象组合相对于类继承的缺点

2022-09-03 18:21:34

大多数设计书籍都说我们应该“更喜欢对象组合而不是类继承”。

但谁能给我举个例子,继承比对象组合更好。


答案 1

继承适用于关系。它不适合人际关系。is-ahas-a

由于类/组件之间的大多数关系都属于存储桶(例如,类可能不是 ,但它可能有一个),因此它遵循组合通常是对类之间的关系进行建模而不是继承的更好主意。has-aCarHashMapHashMap

然而,这并不是说继承对于某些方案没有用处或不是正确的解决方案。


答案 2

我的简单答案是,您应该将继承用于行为目的。子类应重写方法以更改方法和对象本身的行为。

本文(采访 GoF 之一的 Erich Gamma)清楚地阐述了为什么支持对象组合而不是类继承