2014-03-12 34 views
0

我不知道這個錯誤以及如何解決它。我的所有子類都出現這個錯誤。包括錯誤消息和需要重寫的抽象方法。增加了課堂和課堂內部的內容。Java中的抽象類錯誤與可比較<T>

錯誤:

MyMath3 is not abstract and does not overide abstract method compareTo(Homework3) in java.lang.Compareable 

代碼:

public abstract class Homework3 implements Comparable<Homework3> 


public class MyMath3 extends Homework3 


private int page; 
    private String typeHomework; 



    /** 

    * Constructor for objects of class MyMath 

    */ 

    public MyMath3(int p) 

    { 

    } 
    public void createAssignment(int p) 

    { 
     typeHomework="Math"; 
     page=p; 
    } 

    public String getHomework() 

    { 

     return typeHomework; 

    } 

    public int getPage() 

    { 

     return page; 

    } 

    public String toString() 

    { 

     return typeHomework+"--- The number of pages needed to read:"+page; 
    } 

} 


public int compareTo(Homework3 obj,Homework3 obj2) 
    { 
     int compareResult= obj.compareTo(obj2); 
     return compareResult; 
    } 
+0

鼠標懸停在Eclipse中的錯誤消息,然後單擊「實現所有抽象方法」選項 – donfuxx

+2

在未來,請用複製和粘貼,而不是重新輸入和手動引入源代碼中不存在的錯誤。 – ruakh

回答

3

compareTo方法的簽名應該是:

@Override 
public int compareTo(final Homework3 other) 

可以使用... this您當前訪問對象!


順便說一句,你可能會在幾分鐘內/秒...... 那是因爲你的compareTo方法遞歸調用自身遇到一些StackOverflowException。您可能打算比較需要閱讀的頁面數量。如果是這樣,這可能是你compareTo實施主體:

return this.getPage() - other.getPage(); 

乾杯;)