我不明白为什么在这个程序中参数化构造函数之后执行Default构造函数?
class A{
int a , b;
A(){
this(10,20);
System.out.println("Inside Default Constructor values:"+a+" "+b);
}
A(int a , int b){
this.a=a;
this.b=b;
System.out.println("Inside Parameterized Constructor values:"+a+" "+b);
}
}
public class thisExample {
public static void main(String[] args) {
A obj = new A();
}
}
这样输出为:
Inside Parameterized Constructor values:10 20
Inside Default Constructor values:10 20
答案 0 :(得分:1)
从代码中可以清楚地知道它为什么会发生
A obj = new A();
调用默认构造函数
A(){
this(10,20);
System.out.println("Inside Default Constructor values:"+a+" "+b);
}
进一步调用你的参数化构造函数this(10,20);
所以您的代码首先打印Inside Parameterized Constructor values:10 20
,然后打印Inside Default Constructor values:10 20
答案 1 :(得分:0)
默认构造函数中的第一个语句执行参数化构造函数。您可以在执行此操作之前包含sysout(10,20)并检查行为。