下面的程序输出为
I am Parameterized Ctor
a = 0
b = 0
public class ParameterizedCtor {
private int a;
private int b;
public ParameterizedCtor() {
System.out.println("I am default Ctor");
a =1;
b =1;
}
public ParameterizedCtor(int a, int b) {
System.out.println(" I am Parameterized Ctor");
a=a;
b=b;
}
public void print() {
System.out.println(" a = "+a);
System.out.println(" b = "+b);
}
public static void main(String[] args) {
ParameterizedCtor c = new ParameterizedCtor(3, 1);
c.print();
}
}
这是什么原因?
最佳答案
未初始化的私有(private)变量 a 和 b 默认设置为零。然后重载 c'tctor 就位。即,parameterCtor(int a, int b) 将从 main 调用,局部变量 a 和 b 设置为 3 和 1,但类变量 a 和 b 仍然为零。因此,a=0, b=0(不会调用默认 c'tor)。
要设置类变量,请使用:
this.a = a;
this.b = b;
关于java - 构造函数重载示例中的混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4646398/