gpt4 book ai didi

重载方法时Java方法继承问题

转载 作者:行者123 更新时间:2023-11-29 06:48:12 26 4
gpt4 key购买 nike

这是我用来检查 Java 继承和方法重载的简单代码。它在我的 IDE 中给出了编译错误。你能给个主意吗?代码中注释的错误行。如果我评论说线路程序工作正常并提供给定的输出。

class Bird {
void sing() {
System.out.println("I am Singing");
}
}
class Peacock extends Bird {
void sing() {
System.out.println("I am Singing COO COO");
}

public void sing(String adverb) {
System.out.println("I am Singing " + adverb);
}
}
public class OverLoadingDemo {

public static void main(String[] args) {
Bird bird = new Peacock();
bird.sing();//This return I am Singing COO COO
bird.sing("Loudly");//ERROR The method sing() in the type Bird is not applicable for the arguments (String)
}
}

最佳答案

Java 编译器看到 bird 变量的类型是 Bird,并且不知道您打算存储对 Peacock 的引用 在该变量中。由于 Bird 类没有名为 sing 的方法,该方法将 String 作为参数,因此它会给您一个错误。

如果 Bird 类有一个 sing 方法以 String 作为参数,那么这段代码将编译。更好的是,在运行时,它将使用 Peacock 类中定义的 sing 方法版本(带有 String 参数),因为那时,变量 bird 实际上会持有一个 Peacock 对象。

关于重载方法时Java方法继承问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59384561/

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