为什么输出只是"AB8"
,为什么"5"
没有打印?!!
有两个班级。其中一个延伸自另一个。
当我从子类创建一个Object时,它给我输出"AB8"
,
我首先想到的是"A5B8"
。所以我会理解为什么?!
public class A {
public A(){
System.out.println("A");
}
public A(int i){
this();
System.out.println(i);
}
}
public class B extends A{
public B(){
System.out.println("B");
}
public B(int i){
this();
System.out.println(i+3);
}
}
public class Test {
public static void main(String[] args) {
new B(5);
}
}
答案 0 :(得分:1)
- 表示构造函数
在这种情况下,调用A(),打印出" A"。
-Child构造函数被称为
在这种情况下,调用B(int),打印出" B"从这个调用() 然后打印5 + 3,即8。
逐行浏览代码,确实很有帮助......
答案 1 :(得分:1)
在B&#39的构造函数B(int i)
中,调用this()
,它是B的无参数构造函数。这将隐式调用A的无参数构造函数,但它永远不会调用{{1 }}
最好使用A(int i)
关键字明确调用A的构造函数。控制流程变得更加清晰。
super
答案 2 :(得分:0)
当您致电new B(5);
时,流程为:new A()
(因为A是B&#39的超类),new B()
(因为您调用了this()
),最后System.out.println(i+3);