gpt4 book ai didi

java - 当其中一个方法在子类中被覆盖时,父类如何运行?

转载 作者:搜寻专家 更新时间:2023-11-01 03:10:55 24 4
gpt4 key购买 nike

当子类重写多个方法并调用父类中的方法时,父类是使用自己预定义的方法,还是子类重写的方法?

对于某些上下文和示例,我的问题源于 AP 计算机科学类(class)中的这个问题。下面,当 super.act() 被调用时,Dogact 方法调用 eat()eat 调用会转到 DogUnderDdog 中的 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() 的结果打印了什么?

  1. 跑吃
  2. 跑吃睡
  3. run eat sleep bark
  4. run eat bark sleep
  5. 由于无限递归,没有打印任何内容。

最佳答案

子类可以通过两种方式调用父类的方法:

  • 调用父类(super class)中定义的方法作为自己的方法,或者
  • 调用父类(super class)中定义的方法,专门请求父类(super class)的行为

第一种方式的语法如下:

act(); // it's the same as this.act()

第二种调用方式的语法如下:

super.act();

我认为现在您有足够的信息来跟踪您的示例中发生的情况,而无需进一步的帮助。

关于java - 当其中一个方法在子类中被覆盖时,父类如何运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10475282/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com