这个问题来自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