2013-04-09 77 views
0

我試圖編譯下面的程序,並不斷收到一個抽象方法錯誤。我試圖編譯的程序如下所示(但尚未完成)。我收到的錯誤是如下:Double不是抽象的,並且不重寫ListInterface中的抽象方法getNext()?

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){ 

    } 
} 
+0

將@Override添加到所有您的重寫方法。它可以幫助你理解 – BobTheBuilder 2013-04-09 17:27:49

+2

你可以使用ListInterface.java的代碼嗎? – 2013-04-09 17:28:26

+0

@baraky使用找到「getNext」:) – Vitaly 2013-04-09 17:31:19

回答

0

這裏有很多錯誤。

一些:

1.

protected DLLNode<T> find(T target){ 

需要返回的東西。

2.

​​

需要返回的東西。

3.

public T getPrevious(){ 

需要返回的東西。

4。

protected DLLNode<T> find(T target) { 

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

看到,get()返回T和發現()返回DLLNode<T>


編譯器剛剛與所有的困惑,並告訴您修復至少東西:)

0

它說,你是不是在覆蓋的ListInterface方法getNext(),目前有兩個getNext()方法。我很驚訝它沒有告訴你,但我想這是看第一個,看到它不同於它期望從ListInterface.java。刪除public DLLNode<T> getNext()方法,錯誤應該消失。

問題的真正解決方案是讓自己成爲一個優秀的IDE,比如Eclipse或IntelliJ。他們會重點介紹代碼中的所有問題,並向您提供如何解決這些問題的建議。一般來說,使用IDE中最難的部分是讓它正確設置,所以我建議你爲你決定的任何IDE做一個教程搜索。

+0

我不會說刪除,因爲它可能是方法的重載。但是,這是一個錯誤的超載。 – 2013-04-09 17:31:35

+0

我沒有注意到我那樣做了,但即使刪除了一個方法,我仍然得到錯誤。我使用了@覆蓋。 – 2013-04-09 17:34:01

+0

我目前使用Geany作爲我的IDE。 – 2013-04-09 17:53:33

0

Got it!

您在缺少一個}:

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; 
     } 
    } 

您不能返回一個值,然後執行另一個命令。切換訂單& DLLNode.setLink()==null;

+0

這是他最後一版。 – Vitaly 2013-04-09 17:39:20

+0

什麼?代碼仍然缺少一個}在if語句後 – BobTheBuilder 2013-04-09 17:40:27

+0

奇怪的是我錯過了,但即使更改我的代碼以包含它也導致我出現相同的錯誤。 – 2013-04-09 17:40:33

相關問題