适当的变量初始化和从另一个类调用

时间:2014-08-01 11:13:51

标签: java oop object

我有以下两个例子:

示例1:

public class class1{
    private classN var1;
    public class1(param1) {
        var1 = new classN(param1); //here I initialize var1;
    }

    public void setVar1(param1){
        this.var1 = new classN(param1)
    }

    public classN getVar1(){
        return this.var1;
    }
}

public class class2{
    private class1 c1;
    public class2(param) {
        this.c1 = new class1(param);
    }

    public void handle(){
        c1.setVar1(sth);
    }
}

示例2:

public class class1{
    private classN var1; //var1 not initialized inside constructor
    public class1() {}

    public void setVar1(param1){
        this.var1 = new classN(param1);
    }

    public classN getVar1(){
        return this.var1;
    }
}

public class class2{
    private class1 c1;
    public class2() {
        this.c1 = new class1();
    }

    public void handle(){
        c1.setVar1(sth);
    }
}

我想问两件事:

  1. 两个例子都相同吗?
  2. 在两种情况下是否初始化了var1,或者我会在示例2中得到某种异常?
  3. 提前谢谢。

2 个答案:

答案 0 :(得分:1)

  1. 不,两个例子都不相同。在示例一中,变量在构造时被初始化,并且class1在没有它的情况下不能被实例化。在示例2中,变量未初始化,并且默认值为null,直到稍后设置setVar1
  2. 为止。
  3. 不,你不会得到例外。如果您在致电getVar1之前尝试拨打handle,则会获得默认的null值。

答案 1 :(得分:-1)

两个示例是否相同?

不,如果是-1,则new class1(param);初始化var1;(为非空值),在第二种情况下,var1将为null