【发布时间】:2018-05-23 13:22:27
【问题描述】:
您能否帮助理解以下 java 代码的输出,其中在为 Subclass 创建对象时调用 Superclass 的 this(0)。
在这段代码中虽然没有提到显式打印20,为什么第一个值打印为20?
class Superclass {
Superclass() {
this(0);
System.out.println("1");
}
Superclass(int x) {
System.out.println("2" + x);
}
}
class Subclass extends Superclass {
Subclass(int x) {
System.out.println("3" + x);
}
Subclass(int x, int y) {
System.out.println("4" + x + y);
}
}
public class practiceTest {
public static void main(String[] args) {
Subclass s = new Subclass(10, 20);
}
}
【问题讨论】:
-
"为什么第一个值打印为
"20"" -> 因为你调用了Subclass的(int, int)构造函数。在此构造函数中,您可以(隐式)调用Superclass的无参数构造函数。在Superclass的无参数构造函数中,调用Superclass的(int)-构造函数,然后打印"2",然后是x的值,即0,产生输出"20"。尝试使用调试器单步执行代码。 -
我没有得到反对票。 OP提供了我们需要的一切并解释了问题。也许是因为缺乏研究,但如果你不知道是为了什么,就很难研究。
-
除了继承和对象创建之外,还有字符串 + 运算符问题......所以......不完全是重复的 IMO
标签: java constructor