构造函数中的对象参数

时间:2012-04-03 10:34:39

标签: java object parameters constructor pass-by-reference

首先,如果我的问题很难理解,我会道歉。我正在努力解释我需要帮助的确切内容。我是Java新手以及通过引用传递等概念。

基本上,我需要知道为什么以下代码不正确。如何告诉Java使用方法将传入的对象作为构造函数的参数?再次道歉,感谢阅读!

public ClassOne(ClassTwo twoObject){

}

public boolean OneMethod(){
    twoObject.MethodName(); // twoObject cannot be resolved.
}

3 个答案:

答案 0 :(得分:2)

您需要在此类的实例中存储twoObject 本地的引用,以便在构造函数范围之外访问它。现在,构造函数使用传递的项执行,什么都不做,twoObject的实例从这个类中消失,用于所有实际目的。

答案 1 :(得分:2)

您在其他方法中使用本地对象它不起作用,您可以创建一个全局对象来保存它然后使用它...

public class classOne{

    Classtwo object;
    public ClassOne(ClassTwo twoObject){
        object = twoObject;
    }

    public boolean OneMethod(){
        object.MethodName(); 
    }
}

希望它可以帮助你:)

答案 2 :(得分:0)

代码不正确,因为调用其方法“MethodName”时“twoObject”不在范围内。 如果在构造函数中使用它,它在范围内,但不在方法“OneMethod”的范围内。 要使用它,您可以创建一个类变量并将其分配给构造函数中的“twoOject”。 然后,您可以在整个班级中使用它。

public ClassOne { 

    private ClassTwo twoObject;  // instance variable

       public ClassOne(ClassTwo twoObject){ 
           this.twoObject=twoObject;
      }

       public boolean OneMethod(){ 
        twoObject.MethodName(); // twoObject is now a class memeber and hence in scope and hence will be resolved 
        return true; //could also be false, just adding a return statement as the return type is boolean
       }

    }