构造函数调用是否创建了一个新实例?

时间:2014-07-06 14:29:44

标签: java

我学到了两件事:

  1. new - 运算符创建一个新实例,然后执行所述的connstructor以初始化该新实例
  2. 构造函数调用(this())创建一个新实例。
  3. 根据我的理解,这些陈述互相反对。

    例如,不会new Example()创建两个实例,因为new - 运算符创建一个,构造函数调用this()并创建另一个实例?当然它并不是什么,但现在究竟是什么创造了一个实例......?

    class Example
    {
        private boolean _b;
    
        public Example()
        {
            this(false);
        }
    
        public Beispiel(boolean b)
        {
            _b = b;
        } 
    }
    

3 个答案:

答案 0 :(得分:6)

您的第二点不正确:调用this()并不会创建新实例"。相反,它调用(通常是不同的)构造函数而不是new调用的构造函数。

调用new是创建新实例的原因。

答案 1 :(得分:0)

您可以在构造函数中使用this来调用具有不同参数数量的同一类的构造函数,例如:

class Example{
    private boolean b;
    public Example(){
        this(false) // you now call public Example(boolean b) to save code istead of    this.b=false
    }
    public Example(boolean b){
        this.b = b;
    }
}

答案 2 :(得分:0)

通过调用this(false),您不会创建新实例。你只需要在构造函数中调用一个构造函数(与你传递的参数的数量相匹配),我现在无法想到任何有效的实际用法,但仍然是完全有效的。请注意,对于像这样的链构造函数,您必须在" parent"的第一行中进行新的构造函数调用。构造函数。如果这是有道理的。 底线;你创建一个对象。 也许为每个不同的构造函数调用添加print语句可以帮助您更好地掌握这一点。

另外,请看一下:How do I call one constructor from another in Java?