如何使用自己类型的成员扩展类?

假设我们需要使用一个名为“BaseNode”的类来实现不同类型的树,从中派生出其他类型的节点,并且它假设有一个名为其自身类型的parent实例变量,通常它看起来像:

 class BaseNode{ //...some fields BaseNode parent; //...other methods } 

现在,如果我要为更多成员的AVL树派生Node:

 class AVLNode extends BaseNode{ //...other useful stuff } 

原始parent (& leftright )节点成员仍将是BaseNode类型,这阻止我实现AVL树。 谁能告诉我如何解决这个inheritance问题? 谢谢!

解决方案1(AVLNode) parent访问parent ,将其(AVLNode) parent(AVLNode) parent 。 您可以在AVLNode编写一个访问AVLNode以使其更方便。

 class AVLNode extends BaseNode { public AVLNode getParent() { return (AVLNode) parent; } } 

解决方案2 – 使BaseNode成为将子类作为参数的generics类。 现在parent可以是所需的确切类型。

 class BaseNode> { T parent; } class AVLNode extends BaseNode { }