2011-02-15 45 views
1

我是初學者。對不起。我該如何解決這個Java繼承練習?

爲了解決這個問題,我正在絞盡腦汁。

任何幫助將不勝感激。

非常感謝你

...................................... ..........................................

定義兩個類,在Java中稱爲MyBaseClass和MyDerivedClass。

前一個類聲明瞭一個名爲meth()的受保護抽象方法,該方法具有非參數並返回一個整數值。

後者類擴展的第一個和通過返回值5

實現繼承的方法........................ ...............................

我的實現是(我知道這是錯誤的,但對不起,我不知道爲什麼..):

public MyBaseClass { 

    protected abstract meth(); 
    return(); 
} 

public MyDerivedClass extends MyBaseClass { 

meth(); 
return (5); 

} 

回答

2

您的實現缺乏Java中的基本原則。也許你應該先學習如何在Java中聲明一個方法/類。不過這裏是正確的解決方案:

抽象類:

public abstract MyBaseClass { 
    protected abstract int meth(); 
} 

的子類:

public MyDerivedClass extends MyBaseClass { 
    @Override 
    protected int meth() { 
     return 5; 
    } 
} 
+0

您應該聲明MyBaseClass抽象,以便它不能直接實例化嗎?它沒有用作對象。 – ComethTheNerd 2011-02-15 09:38:14

+1

謝謝。首先,我忘記了變量類型int,其次我試圖覆蓋meth方法時犯了一個大錯誤。是@Override 是強制性的嗎? – QJ746 2011-02-15 09:38:53

+0

不,它是一個靜態檢查添加到正常的,只是幫助你發展(並避免錯別字) – Jack 2011-02-15 09:39:53

5

這聽起來像一個大缺乏瞭解什麼是類可以包含如何OOP一般工作。你在類裏面有什麼是方法和變量,而不是代碼的聲明。

很明顯meth();是一個聲明,確實是一個函數的調用。當你正在尋找的是實現抽象方法:

public abstract class MyBaseClass { 
protected abstract int meth(); 
} 

public class MyDerivedClass extends MyBaseClass { 
protected int meth { return 5; } 
} 

看:每個類別的{ }封閉包含的方法由(如protected int meth())的簽名定義的列表和體內過多身體(除非abstract)。變量也是允許的。

但恕我直言,你應該更加專注於學習OOP基礎知識和編程基礎,然後再深入研究繼承......並且始終記住:在完整的面向對象編程語言(如Java)中,語句不能駐留在方法體外。

1
public abstract class MyBaseClass{ 

protected abstract int meth(); 


} 

public class MyDerivedClass extends MyBaseClass{ 

protected int meth(){ 
return 5; 
} 

}