如何解决尝试覆盖方法时名称冲突
这是我在这里的第一篇文章,但我需要帮助试图弄清楚为什么我的子类不会让我覆盖父方法。
我的任务是创建一个具有某些功能的通用二叉搜索树。下一个任务是创建一个通用的 AVL 树,我决定从我的自定义二叉搜索树扩展它以重用代码并简单地添加使其功能所需的旋转。
但是当试图覆盖该方法时,我不断收到名称冲突错误。如果我在我的 AVLTree 类中去掉我的 Comparable 接口扩展并使我的插入方法通用,我会收到一个参数不匹配错误,说 T 无法转换为 Comparable。
这就是我被困的地方,如果有人能提供任何类型的输入,我们将不胜感激。
public class BinaryTree <T extends Comparable<T>>{
Node Root;
public BinaryTree(){
this.Root = null;
}
public boolean isEmpty(){
return this.Root == null;
}
public void insert(T data){
this.insert(data,this.Root);
}
protected void insert(T data,Node<T> n){
if(this.Root == null){
this.Root = new Node(data);
}
if(data.equals(n.getData())){
n.occurances++;
}
else if(data.compareto(n.data) < 0){
if(n.left != null)
insert(data,n.left);
else
n.left = new Node(data);
}
else if(data.compareto(n.data) > 0){
if(n.right != null)
insert(data,n.right);
else
n.right = new Node(data);
}
}
第一次尝试:
public class AVLTree <T extends Comparable<T>> extends BinaryTree{
private static final int ALLOWED_IMBALANCE = 1;
public void insert(T data){
this.insert(data,this.Root);
}
第二次尝试:
public class AVLTree extends BinaryTree{
private static final int ALLOWED_IMBALANCE = 1;
public <T>void insert(T data){
this.insert(data,this.Root);
}
error for overwriting insert method
解决方法
尝试传递BinaryTree
的类型参数:
// vvv
public class AVLTree <T extends Comparable<T>> extends BinaryTree<T> {
private static final int ALLOWED_IMBALANCE = 1;
@Override
public void insert(T data){
this.insert(data,this.Root);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。