我正试图在searchTree类中编写一个递归方法,出于某种原因,这些方法在接口中的类外部查找方法的定义,而不是查找它们自己。下面是一些代码片段:
在主类中:
public class BinarySearchTree<T extends Comparable<T>> implements BinarySearchTreeInterface1<T>, BinarySearchTreeInterface2<T>{`Main中的递归方法:
public int getHeight(){
if (isEmpty()){
return 0;
}else{
int height = 1 + Math.max(this.getLeftSubTree().getHeight(),
this.getRightSubTree().getHeight());
return height;
}
}`如您所见,我有两个接口类。该错误突出显示getHeight()并声明:
cannot find symbol
symbol: method getHeight()
location: interface BinarySearchTreeInterface1<T>
where T is a type-variable:
T extends Comparable<T> declared in class BinarySearchTree我在Interface2文件中显示了5个递归方法,所有这些方法都得到了相同的错误。谢谢你的帮助。
更新:我很犹豫要不要发布界面类,因为它们来自大学课程,我不想让老师不高兴。具有讽刺意味的是,非递归方法工作得很好。以下是Interface2文件显示的一小部分内容:
public interface BinarySearchTreeInterface2<T>{
public int getNumberOfNodes();
public int getHeight();发布于 2012-12-02 05:29:12
看起来getLeftSubTree()返回一个BinarySearchTreeInterface1<T>。但是getHeight()是在BinarySearchTreeInterface2<T>中定义的,所以不能对getLeftSubTree()的结果调用getHeight()方法。
您可以通过覆盖getLeftSubTree()方法来编译程序,如下所示:
public BinarySearchTree<T> getLeftSubTree() {
...
}当然,getRightSubTree()也必须这样做。
https://stackoverflow.com/questions/13663755
复制相似问题