Double不是抽象的,并且不会覆盖ListInterface中的抽象方法getNext()?

时间:2013-04-09 17:25:51

标签: java compiler-errors linked-list

我正在尝试编译以下程序并继续收到抽象方法错误。我正在尝试编译的程序如下(尽管尚未完成)。我收到的错误如下:

Double.java:5: error: Double is not abstract and does not override abstract method getNext() in ListInterface
public class Double<T extends Comparable<T>> implements ListInterface<T>{
       ^
  where T is a type-variable:
    T extends Comparable<T> declared in class Double
1 error

import java.io.*;
import ch06.lists.*;
import support.DLLNode;

public class Double<T extends Comparable<T>> implements ListInterface<T>{

    protected DLLNode<T> front;
    protected DLLNode<T> rear;
    protected DLLNode<T> curPosition;
    protected int numElements;

    public Double(){
        front = null;
        rear = null;
        curPosition = null;
        numElements = 0;
    }

    protected DLLNode<T> find(T target){

    }

    public int size(){
        return numElements;
    }

    public boolean contains(T element) throws NullPointerException{
        if (DLLNode.getInfo()!=element){
            return false;
        }
        else{
            return true;
        }
    }

    public boolean remove(T target) throws StackUnderflowException{
        if (!contains(target)){
            return false;
        }
        else{
            return true;
            DLLNode.setLink()==null;
        }
    }

    public T get(T element){
        return find(element);
    }

    public String toString(){

    }   

    public void reset(){

    }

    @Override
    public T getNext(){
        return null;
    }

    public void resetBack(){

    }

    public T getPrevious(){

    }

    public void add(T element){

    }
}

3 个答案:

答案 0 :(得分:0)

它表示您没有覆盖getNext()中的ListInterface方法,目前您有两种getNext()方法。我很惊讶它没有告诉你这个,但我想它正在看第一个并且看到它与ListInterface.java的预期不一样。删除public DLLNode<T> getNext()方法,错误应该消失。

问题的真正解决方案是让自己成为一个好的IDE,比如Eclipse或IntelliJ。他们将突出显示代码中所有问题的位置,并为您提供有关如何解决问题的建议。通常,使用IDE最困难的部分是正确设置它,所以我建议您搜索一下您决定使用的IDE的教程。

答案 1 :(得分:0)

知道了!

你错过了}}:

public boolean remove(T target) throws StackUnderflowException{
    if (DLLNode.contains()==target){
        return true;
        DLLNode.setLink()==null;
}

虽然我真的不明白你在这里尝试做什么......

在:

   public boolean remove(T target) throws StackUnderflowException{
        if (!contains(target)){
            return false;
        }
        else{
            return true;
            DLLNode.setLink()==null;
        }
    }

您无法返回值并执行其他命令。切换返​​回顺序&amp; DLLNode.setLink()==null;

答案 2 :(得分:0)

这里有很多错误。

一些:

1

 protected DLLNode<T> find(T target){

需要退货。

2

 public String toString(){

需要退货。

3

public T getPrevious(){

需要退货。

4

    protected DLLNode<T> find(T target) {

,而

    public T get(T element) {
        return find(element);
    }

看到get()返回T而find()返回DLLNode<T>


编译器只是对所有这些感到困惑,并告诉你至少要解决一些问题:)