gpt4 book ai didi

java - 对调用默认值、无参数构造函数感到困惑

转载 作者:行者123 更新时间:2023-12-02 06:36:35 24 4
gpt4 key购买 nike

来自贝茨和塞拉:

class Top {
public Top(String s) {
System.out.print("B");
}
}

public class Bottom2 extends Top {
public Bottom2(String s) {
System.out.print("D");
}

public static void main(String[] args) {
new Bottom2("C");
System.out.println(" ");
}
}

选择是:

A. BD

B.数据库

C.业务发展中心

D. DBC

E.编译失败

答案:

® ✓ E 是正确的。无法满足 Bottom2 构造函数中隐含的 super() 调用,因为 Top 中没有无参数构造函数。仅当类没有显式定义构造函数时,编译器才会生成默认的无参数构造函数。

但是我很困惑。不是“public Top(String s) { System.out.print("B"); }” 显式定义的构造函数?我哪里出错了?

我在这里看到了这个问题,但并没有真正理解答案。

最佳答案

隐式调用尝试调用不带参数的superTop 没有无参数构造函数,因此对 super 的调用试图调用不存在的方法。当您想要调用非无参数构造函数时,您需要显式地执行。 Bottom2 的构造函数应调用 super(s) 来调用 Top 的 1-arg 构造函数。

关于java - 对调用默认值、无参数构造函数感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19579649/

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