如何在构造函数中初始化值无法通过对象传递的值以及我们是否可以从main方法传递它们?
class ex
{
int a,b;
ex()
{
this.a=b;
}
public static void main(String args[])
{
//here we pass the values to that consructor ex
ex obj=new ex();
}
}
答案 0 :(得分:3)
创建一个重载的构造函数,它接受两个参数。
public ex(int a, int b) {
this.a = a;
this.b = b;
}
public static void main(String...args){
ex obj = new ex(1,2)
}
值可以通过我们应该从main方法传递的对象传递
如果我理解正确,你想从main方法传递参数并在构造函数中对它们进行硝化,唯一要做的就是在创建对象时将它们传递给constuctor
答案 1 :(得分:0)
如果在声明新对象时不想显示初始化值,可以从构造函数中调用setter方法。
请参阅以下代码以供参考:
class Testcl {
int a,b;
Testcl(){
setValues(1,2);
}
private void setValues(int a, int b){
this.a=a;
this.b=b;
}
public static void main(String [] args){
Testcl test = new Testcl();
System.out.println("a : " + test.a + " b : " + test.b);
}}
答案 2 :(得分:0)
首先要说的是,这实际上“有效”......从某种意义上说它可以编译并执行而没有任何错误。
int a,b; // default initialized to 'zero'
ex() {
this.a=b; // assigns 'zsro' to a.
}
但当然,它没有实现任何目标......因为a
已经 zero
。
现在{/ 1}}方法可以在构造函数返回后为main
和/或a
字段分配一些内容。但是在中调用构造函数之前,没有办法(在纯Java 1 中)将一些非零值引入b
...如果这是什么你在问。
实际的解决方案是将b
和a
参数添加到构造函数中。
1 - 非纯Java解决方案可能是使用构造函数的字节码“徘徊”,以便它执行您“需要”执行的操作。但这太可怕了,可怕的解决方案有回来咬你的倾向。