2012-04-03 164 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