【发布时间】:2014-05-15 04:53:22
【问题描述】:
遇到以下问题: 我正在使用我自己的通用 Tree 类。另一个类,一个联系人列表,继承自该 Tree 类。我这样做的原因是,还有其他类都需要相同的树功能,但它们的用途不同。
Node 也是一个通用节点,也继承了特殊的节点类型,如电话列表、电子邮件联系人列表等。
在 Tree 类中有一些使用局部变量 Node 的方法。在联系人列表树中,我需要将这个变量设为Contact(从 Node 继承)。当我使用联系人列表中的一种方法时,它将根节点定义为Node 而不是Contact,因此它使用通用节点而不是继承的节点。
看起来是这样的:
public class Tree {
Node root;
public void insert( String x ) {
root = insert( x, root );
}
这是联系人列表(根是 Contact 类型(扩展节点):
public class ContactList extends Tree {
Contact root;
这是Node:
public class Node {
String idString;
Node leftChild;
Node rightChild;
public Node() {}
public Node(String idString) {
this.idString = idString;
}
}
我如何告诉继承方法插入不是使用本地root,而是使用继承类中的方法。
我试图在ContactList的构造函数中解决这个问题:
public ContactList() {
super.root = this.root;
}
没用。我认为它会立即被 Tree 类覆盖,那么继承通用节点行为的正确方法是什么?
【问题讨论】:
-
你应该使用泛型,
Node<Contact>。
标签: java inheritance