gpt4 book ai didi

java子类问题

转载 作者:行者123 更新时间:2023-11-30 05:56:57 26 4
gpt4 key购买 nike

我有一个使用 BinaryTree 类构建的 BinarySearchTree 类。现在我想通过子类化 BinarySearchTree 类来构建一个 RedBlackTree 类。问题是 BinaryTree 类没有颜色字段。因此,我创建了一个 ColorBinaryTree 类,它是 BinaryTree 类的子类。这是我有点困惑的地方。在我的 BinaryTree 类中,我有以下方法

protected BinaryTree<E> parent(){
return parent;
}

其中父级显然是另一个BinaryTree。在我的 RedBlackTree 类中,我还需要能够访问 ColorBinaryTree 对象的父对象。但是,我不能只使用从 BinaryTree 类继承的方法,因为它返回一个 BinaryTree 对象,这意味着我无法访问颜色。使用以下代码我收到错误

ColorBinaryTree<E> parent = newNode.parent();

其中newNode是一个ColorBinaryTree对象。所以在我看来,唯一的方法就是像这样覆盖我的 ColorBinaryTree 子类中的上述方法。

@Override 
protected ColorBinaryTree<E> parent(){
return parent;
}

我是否缺少某种方法来获取此值,或者我是否只需要重写所有返回 BinaryTree 对象的方法?如果是这样,那似乎有点浪费,因为方法的主体完全相同。

最佳答案

是的,您应该执行协变覆盖。这并不是“浪费”,因为它限制了 ColorBinaryTree 的所有子类的 parent 返回类型。

关于java子类问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6525312/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com