當一個子類覆蓋多種方法和它的父類調用的方法,並在父類中使用它自己的預先定義的方法,或者說孩子已經覆蓋了的呢?父類在子類中覆蓋其中一個方法時如何工作?
對於一些上下文,例如,我的問題從AP計算機科學課程這個問題造成的。下面,當super.act()
被調用時,從Dog
的act
方法調用eat()
。請問eat
調用Dog
或UnderDdog
中的eat
方法嗎?
考慮以下兩類。
public class Dog
{
public void act() {
System.out.print("run");
eat();
}
public void eat() {
System.out.print("eat");
}
}
public class UnderDog extends Dog
{
public void act() {
super.act();
System.out.print("sleep");
}
public void eat() {
super.eat();
System.out.print("bark");
}
}
假設以下聲明出現在客戶端程序中。
Dog fido = new UnderDog();
作爲呼叫fido.act()
的結果打印了什麼?
run eat
run eat sleep
run eat sleep bark
run eat bark sleep
- 什麼也沒有打印由於無限遞歸。
當你嘗試時會發生什麼? –