我搜索了這個網站,和其他人幾個小時無濟於事。目前,我正在繼承並且在路上遇到了一些麻煩。我有一個名爲植物的超級類,它有子類叫蔬菜和花。和一個叫Tomato的子類,它擴展了Vegetable類,現在我的問題是我的Tomato類不能訪問它上面任何類的方法。因此,基本上我問,如果C擴展B,B擴展A,爲什麼C在語法上不能從我的程序中訪問A或B中的公共方法?一個子類調用它的超類的方法(這也是一個子類)
public class Tomato extends Vegetable{
private String breed;
public Tomato(String o, int s, String b)
{
super();
breed = b;
}
public String getBreed()
{
return breed;
}
public String toString()
{
return "[Owner: " + getOwner() + " , Sprouts: " + getSprouts()
+ " , Breed: " + getBreed() + "]";
}
public void water()
{
if(breed.toLowerCase().contains("porterhouse"))
{
int numSprouts = getSprouts();
setSprouts(numSprouts*3);
}
} }
我在方法調用getOwner()和getSprouts()方面收到錯誤,只有訪問方法。 getOwner()是工廠類中的公共方法,getSprout()是Vegetable類中的方法,該類是層次結構中直接位於其上方的類。
西紅柿實際上水果) – flakes
@MartinS,真。 C不能直接使用'super'調用A的任何方法,但B可以將函數調用傳遞給A. – callyalater
向我們展示一些代碼。 'C'應該能夠從'A'和'B'調用公共方法。 – Marvin