Inheritance 真实世界树的继承示例

Inheritance 真实世界树的继承示例,inheritance,Inheritance,我确实有一个关于继承和类的基本问题 如何创建树的真实世界对象真实的树 树应该有树枝,树枝应该有叶子 因此: 但是现在,树类应该知道所有的分支实例并自己创建所有的分支对象,而分支应该为自己创建叶子并了解它们吗 因此,只要放一棵树,你就会: Tree myNewTree = new Tree(); // or something like that ? 我想我在这里找到了一些东西。。。形状->矩形的示例和您要求矩形的示例是有意义的。您可以有以下结构 class Tree { // somethi

我确实有一个关于继承和类的基本问题

如何创建树的真实世界对象真实的树

树应该有树枝,树枝应该有叶子

因此:

但是现在,树类应该知道所有的分支实例并自己创建所有的分支对象,而分支应该为自己创建叶子并了解它们吗

因此,只要放一棵树,你就会:

Tree myNewTree = new Tree(); // or something like that ? 

我想我在这里找到了一些东西。。。形状->矩形的示例和您要求矩形的示例是有意义的。

您可以有以下结构

class Tree {
// something about a tree itself
        Branch b[];
        Leaf lf[];
}

Class Branch {
    //something about a branch
}

Class Leaf{
  //something about a leaf
}
若您想限制类型树的分支和叶,那个么可以在上述结构中扩展树类,并根据实际场景将它们组合到树类中


在这里,我使用了数组,您可以根据需要使用其他任何东西,如ArrayList或简单对象

继承在这里是错误的方法。树枝不是树的一种,叶子也不是树枝的一种。在这里,什么样的方法比较合适?用合成而不是继承。这里的树是一个对象。你必须只上一节课。分支和叶可以是变量或数组。这取决于你的情况,你想要的是合成或者聚合,而不是继承。看看这个链接或者这个我确实从评论中了解了几乎所有的内容,但是你说在上面的结构中扩展树类是什么意思?这仅仅意味着当你仍然想要你的分支和叶子从树上继承。然后为分支和叶子继承树类。我觉得叶子应该是分支的属性,不是树。@bwroga在我的示例中是这样。@Tomas,注释是为用户2408578准备的。
class Tree {
// something about a tree itself
        Branch b[];
        Leaf lf[];
}

Class Branch {
    //something about a branch
}

Class Leaf{
  //something about a leaf
}