java子类问题

jhl*_*u87 2 java tree inheritance subclass

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

protected BinaryTree<E> parent(){
     return parent;
}
Run Code Online (Sandbox Code Playgroud)

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

ColorBinaryTree<E> parent = newNode.parent();
Run Code Online (Sandbox Code Playgroud)

在哪里newNode是一个ColorBinaryTree对象.所以在我看来,唯一的方法是在我的ColorBinaryTreesublcass中覆盖上面的方法,就像这样.

@Override 
protected ColorBinaryTree<E> parent(){
     return parent;
}
Run Code Online (Sandbox Code Playgroud)

我错过了一些获得aorund的方法,或者我只是必须去覆盖所有返回BinaryTree对象的方法?如果是这样,这似乎是一种浪费,因为方法的主体是完全相同的.

Chr*_*ung 5

是的,你应该做协变覆盖.这不是"浪费",因为它约束了parent所有子类的返回类型ColorBinaryTree.