多次调用构造函数

时间:2016-03-24 04:20:30

标签: java

如何使用同一个对象多次调用构造函数

class a
{

    a(int i)
    {
        System.out.println(i);
    }

    public static void main(String args[])
    {
        a b = new a();
        int x = 10;
        while( x > 0)
        {
            //Needed to pass the x value to constructor muliple times
        }
    }
}

我需要将参数传递给该构造函数。

3 个答案:

答案 0 :(得分:2)

class A的构造函数构造class A的对象。

对象的构造只发生一次,之后您可以使用方法(函数)修改对象的状态。

另请注意,如果程序员不在其类中编写任何构造函数,则Java编译器会自行为类(public constructor without any parameters)添加构造函数。

在程序员提供构造函数的情况下,编译器不会创建默认构造函数。它假定,程序员知道并希望根据显式构造函数的签名创建他/她的类的对象。

构造函数调用是链接的。假设存在以下阶级关系。

Child.java extends Parent.java and Parent.java extends GrandParent.java

现在如果完成Child child = new Child();,则只创建一个对象Child.java,但该对象首先具有GrandParent的所有功能,然后具有Parent然后是Child

因此调用GrandParent.java的第一个构造函数然后调用Parent.java,最后调用Child.java的构造函数。

  

构造函数是特殊的,与其他方法不同。

构造函数的意图是创建对象,因此每次使用new运算符时,都会调用构造函数并创建新对象 。你不能直接调用构造函数。您需要新的运算符来调用它。即使你看到一些类定义方法如getInstance(),它仍然使用new运算符来构造对象并返回创建的对象。

* PS有一些方法可以在不调用构造函数的情况下创建对象(比如序列化),但这不在讨论的上下文中。

答案 1 :(得分:0)

构造函数在创建对象时只调用一次。

你能具体说明你想要达到的目标吗?

但我认为你可以尝试以下两种方法之一。

调用构造函数创建一个新对象并将其分配给对象'b':

b = new a(1);

使用setter方法:

void setI(int i){
     this.i = i;
}

b.setI(1);

答案 2 :(得分:0)

    int x = 10;
    while( x > 0)
    {
        a b = new a(x);
    }