-2

如何在构造函数中初始化值不能由对象传递并且我们可以从主方法传递它们?

  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();
        }
    }
4

3 回答 3

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)
}

值不能由对象传递,我们应该从主方法传递

如果我理解正确,您想从主方法传递参数并在构造函数中初始化它们,唯一要做的就是在创建对象时将它们传递给构造函数

于 2012-11-19T13:54:58.867 回答
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); }}
于 2012-11-19T14:18:13.700 回答
0

首先要说的是,这确实“有效”......在某种意义上,它编译和执行没有任何错误。

    int a,b;  // default initialized to 'zero'

    ex() {
        this.a=b;  // assigns 'zsro' to a.
    }

但是,当然,它没有取得任何成果……因为a已经到 zero那个地步。

现在,该方法可以在构造函数返回后将main某些内容分配给aand/orb字段。但是没有办法(在纯 Java 1中)在调用构造函数之前获得一些非零值......如果这是你所要求的。b

实际的解决方案是向构造函数添加ab参数。


1 - 一个非纯 Java 解决方案可能是使用构造函数的字节码“到处乱搞”,以便它完成您“需要”做的事情。但这太可怕了,可怕的解决方案有回来咬你的趋势。

于 2012-11-19T14:24:18.227 回答