【发布时间】:2015-04-16 20:47:04
【问题描述】:
我确实有一个关于继承和类的基本问题。
您将如何创建一棵树(一棵真实的树)的真实世界对象。
树应该有树枝,树枝应该有叶子。
所以:
class Tree {
// something about a tree itself
}
Class Branch : Tree {
//something about a branch
}
Class Leaf : Branch {
//something about a leaf
}
但是现在,一个树类是否应该知道所有分支实例并自己创建所有分支对象,而分支应该为自己创建叶子并且也知道它们?
所以如果你只放一棵树,你会:
Tree myNewTree = new Tree(); // or something like that ?
我想我在这里得到了一些东西......形状示例 - > 矩形并且你要求矩形是有道理的。
【问题讨论】:
-
继承在这里是错误的方法。树枝不是树,叶子也不是树枝。
-
这里适合什么方法?
-
选择组合而不是继承
-
这里的树是一个对象。你必须只有一门课。分支和叶子可以是变量或数组。这取决于你的情况。
-
你想要的是composition或者aggregation,而不是inheritance。看看这个链接from stack overflow或者这个tutorial
标签: inheritance