2012-04-03 165 views
1

首先我很抱歉如果我的问题很难理解。我很难试图解释我需要帮助的是什么。我是新来的Java和通过引用传递的概念等。构造函数中的对象参数

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

public ClassOne(ClassTwo twoObject){ 

} 

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

回答

2

您使用的是本地对象中的另一种方法它不是工作,你可以创建一个全局对象来保存它,然后用它...

public class classOne{ 

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

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

希望它可以帮助你:)

+0

啊当然!非常感谢! :) – user1310148 2012-04-03 11:08:54

+0

不客气:) – 2012-04-03 11:17:50

2

您将需要一个参考twoObject这个类的实例中本地才能访问它的构造函数的范围之外。现在构造函数使用通过的项目执行,不做任何事情,并且twoObject的实例从所有实际目的中消失。

0

该代码不正确,因为“twoObject”在其方法“MethodName”被调用时不在范围内。 它在构造函数中使用的范围内,但不在方法“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 
     } 

    } 
+0

我认为正确的名词是“实例变量” – newacct 2012-04-03 22:58:46

+0

是的,[类变量](http://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html)意味着不同的东西。但是,否则就是好的答案 – Leigh 2012-04-04 01:29:56