如何使用同一个对象多次调用构造函数
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
}
}
}
我需要将参数传递给该构造函数。
答案 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);
}