构造函数链是否会在Java中创建多个对象?

时间:2015-05-21 10:23:51

标签: java this constructor-chaining

如果我使用此关键字调用同一类的另一个构造函数。它会创建两个对象吗?

如果是,在下面的示例中将激活哪个对象:

Class Sample {
    int a;
    String b;

    Sample() {
        this("Hello");
        a=10;
    }

    Sample(String temp) {
        b = temp;
    }    
}

我想知道Constructor链接的行为。请解释它是如何工作的?

3 个答案:

答案 0 :(得分:8)

不,构造函数链接不会创建一个额外的实例,它只是执行链式构造函数的逻辑,允许您重用其代码。

答案 1 :(得分:2)

下, this("Hello");在这里调用Sample(String temp)构造函数,它不会创建另一个对象。

答案 2 :(得分:0)

正如其他人所说,你只会得到一个对象,每个构造函数初始化同一个对象。

最适合自己看看:

for

请注意,如果您尝试访问未初始化的字段,则在未完全初始化的对象上调用实例方法可能会导致问题,因此请谨慎处理。