這個問題來自AP計算機科學實踐考試。爲什麼這個對象可以訪問父類的方法?
public class Bird
{
public void act()
{
System.out.print("fly");
makeNoise();
}
public void makeNoise()
{
System.out.print("chirp");
}
}
public class Dove extends Bird
{
public void act()
{
super.act();
System.out.print("waddle");
}
public void makeNoise()
{
super.makeNoise();
System.out.print("coo");
}
}
假設下面的聲明出現在類以外的其他鳥或鴿子:
Bird pigeon = new Dove();
什麼是印刷作爲呼叫pigeon.act()
的結果?
我認爲答案是「飛唧唧」,但教科書說答案是「飛啾咕coo蹣跚」。我認爲'鴿子'只能訪問Bird中可用的方法?我的印象是,如果用戶想要訪問鴿子的方法,鴿子就必須投向鴿子。
Bird pigeon = new Bird();
會給出相同的輸出嗎? Dove pigeon = new Dove();
怎麼樣?
任何類都可以使用'super'關鍵字明確調用其父方法。 –
我瞭解super關鍵字的功能。我的問題是爲什麼「鴿子」可以訪問鴿子的方法。我認爲「鴿鴿=新鴿」();「會產生「飛啁啾coo蹣跚」。 –
提示:手動調用'pigeon.makeNoise()'並觀察會發生什麼。 – biziclop