我正在寻找处理细微问题的清晰且正确的方法。 Technicaly是的,我可以简单地忽略它,但这不是重点。通过继承更改方法参数
我有一个BinaryTree类,它利用Node类型的对象。 BinaryTree类有一个方法addNode(Node n),它根据二叉树的规则添加一个新节点
现在我想创建一个RedBlackTree类,该类使用RedBlackNode类型的对象(Node有一个额外的颜色字段)并从BinaryTree继承。我不应该离开addNode方法,因为它允许将正常的节点添加到RedBlackTree,导致错误。我可以像这样超载的方法:
class RedBlackTree extends BinaryTree
{
public void addNode(RedBlackNode n)
{
...
}
}
但其他方法仍然是暴露的,理想情况下,它不应该是。 我可以覆盖这样的方法:
但随后的方法仍然需要一个正常的节点作为参数,并且理想地应该只接受RedBlackNode(当他试图使用方法也可能混淆别人)。
我想要的是继承addNode方法,使参数类型从Node更改为RedBlackNode。我怎么做?这甚至可能吗?或者这是我的一个概念性问题?
为什么不简单地使用泛型?我认为这种情况是他们被添加到语言中的。 –
非常正确:class BinaryTree类RedBlackTree扩展了BinaryTree –
Ironcache