当子类覆盖多个方法并调用其父类中的方法时,父类是使用它自己的预定义方法还是子类已覆盖的方法?
对于某些上下文和示例,我的问题源于 AP 计算机科学课程中的这个问题。下面,当super.act()被调用时,act来自Dog调用的方法eat()。该eat调用是否转到or中的eat方法?DogUnderDdog
考虑以下两个类。
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 eatrun eat sleeprun eat sleep barkrun eat bark sleep- 由于无限递归,没有打印任何内容。