Java-多态和对象类设计

问题描述 投票:1回答:1

我正在尝试练习泛型和多态。我有一个Node类,如下所示:

public class Node<T> {
    public T name;
    public Node[] children;
}

然后是一个通用的Tree类:

public class Tree<T> {
    public Node<T> root;
}

现在,我正在尝试实现一个二叉树。二叉树is a树,因此满足is a多态性规则。我正在努力如何强制二叉树中的节点最多可以有两个孩子。

我应该将节点类扩展到Binary节点,并且子数组始终初始化为大小2吗?如果BinaryTree扩展Tree,如何在children成员变量上施加限制?

就像我想做的一样:

BinryTree extends Tree
BinaryTreeNode extends Node

其中Node是Tree中的成员变量,BinaryTreeNode是BinaryTree中的成员变量。什么是合适的设计?

java polymorphism extends instance-variables
1个回答
0
投票

关于:

public class Node<T> {
public T name;
public Node[] children;
public Node(int numOfChildren) { children = new Node[numOfChildren]; }
}

如果您希望节点容纳2个节点,请使用2调用构造函数,这样子级将最多容纳2个节点。另外,最好使用封装并将子项设置为私有,并提供使用getter和setter的可访问性:

public class Node<T> {
public T name;
final private Node[] children;
public Node(int numOfChildren) { children = new Node[numOfChildren]; }

public Node getChildren() { return children; }
public void setChildren(Node newChildren) { children = newChildren; }
}
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.