java - 构造函数重载示例中的混淆

标签 java

下面的程序输出为

 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/

相关文章:

java - 从字符串JAVA中删除序列字符

Java从http请求接收文件

java - 呈现 HTML(w/javascript)并转换为图像

java - 在 Swing 中嵌入浏览器,希望使用 VLC 小程序

java - 无法建立 ionic

java - 如何替换签名 jar 中的单个类文件?

java - 显示方法

java - ArrayList相关调试问题

java - 关于 Java 的外观

java - 使用 Date.parse(dateString) 给定日期的毫秒数是错误的