gpt4 book ai didi

java - 基于 SCJP 程序的怀疑(EXAM 310-065)

转载 作者:行者123 更新时间:2023-12-04 06:50:14 25 4
gpt4 key购买 nike

class Building{
Building(){
System.out.print("b ");
}
Building(String name){
this();
System.out.print("bn "+name);
}
}
public class House extends Building{
House(){
System.out.print("h ");
}
House(String name){
this();
System.out.print("hn "+name);
}
public static void main(String[] args){
new House("x ");
}
}

我认为输出必须是 b bn h hn x .但是输出是 b h hn x .

我很困惑。这个输出是怎么来的。帮我

最佳答案

您可能正在考虑对 super() 的隐式调用Java 插入到构造函数中。但请记住,Java 仅在需要时才这样做——也就是说,当您自己不调用另一个构造函数时。当您调用 this()单论House构造函数,您已经在推迟到另一个构造函数,所以 Java 不会插入对 super() 的调用那里。

相反,在零参数构造函数 House() ,您不会通过调用 this(...) 来启动它。或 super(...) .所以在那一个中​​,Java 确实插入了 super()为你。

底线,Java 从不调用 Building(String) .在对象的初始化过程中只调用了一个父类(super class)构造函数,它是一个没有参数的构造函数。

关于java - 基于 SCJP 程序的怀疑(EXAM 310-065),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3234073/

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