当一个继承变成了整体组成部分



这是整个零件组成的定义。http://en.wikipedia.org/wiki/Object_composition这是遗产。http://en.wikipedia.org/wiki/Inheritance_%28object-定向_编程%29

我今天遇到一个问题,无法解决。假设我们有一个关于即将构建的软件的软件计划。我的问题是,在什么情况下,两个类之间现有的继承关系会变成组合?这听起来很奇怪,但我无法回答。提前谢谢。

组合(has-a)和继承(is-a)是两个截然不同的概念。然而,当is-a变成has-a时,会出现一种特殊情况。考虑

class MyItemList publicly inherits Vector<MyItem>...

这是MyItemListis-a矢量的一个明显例子。它具有Vector的所有属性,可以用作MyItems的Vector。每个人都可以使用MyItemList的实例作为Vector。

现在考虑

class MyItemList privately inherits Vector<MyItem>...

MyItemList不会告诉任何人它是矢量。没有人可以将MyItemList用作Vector。它具有向量的所有属性(有一个向量),但不会告诉任何人

这实际上是一种has-a关系。唯一的区别是MyItemList不是通过属性/字段/成员引用向量,而是通过this(或您的语言使用的任何自引用关键字)引用向量。

您选择的语言必须有一个机制来声明继承为非公共的

最新更新