为什么构造函数中的关键字给出不同的结果?

时间:2017-11-20 19:28:19

标签: java this

我不明白为什么在这个程序中参数化构造函数之后执行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

2 个答案:

答案 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)并检查行为。