【发布时间】:2019-12-17 17:17:24
【问题描述】:
假设我有一个 A 类。B 类和 C 类都是 A 的子类。 如果类 C 需要包含 B,这会是一个有缺陷的继承设计吗?
编辑:一个例子
假设我有一个名为 Trip 的父类,它有两个属性:start 和 end。我从 A 继承的第一个类 (B) 称为 SimpleTrip,它有一个称为传输的附加属性(因此总共:开始、结束和传输)。我从 A 继承的第二个类 (C) 称为 CompoundTrip,它有两个添加的属性,一个 SimpleTrips 数组和一些行程(所以总共:开始、结束、SimpleTrips 数组、行程数)。复合旅行是简单旅行的“组”,但仍然是一次旅行。
【问题讨论】:
-
这取决于您所说的“需要包含 B” - 如果 C 类需要 B 类拥有的 所有内容,那么让 C 类派生自 ( = 的孩子?) B 类。
-
对我来说似乎很安全,但是......除非有我不考虑的特殊情况,否则我认为不需要
BB将只是一个C与一条腿和一条腿不会被认为是一次旅行。这可能会完全消除继承。 -
您的示例似乎与复合设计模式所期望的相似。
标签: c++ inheritance include children