2010-06-19 96 views
2

我有一個對象,其職能內的對象變量,我想從另一個類中調用例如使用其他類

class smo { 

    int spoon = 10; 

    smo() { 
    } 

    int get_spoon() { 
     return spoon; 
    } 
} 

class boat { 

    boat() { 
    } 

    print_smo(Object test) { 

     test.get_spoon(); 

    } 
} 

它告訴我,該功能get.spoon()不存在。這個錯誤是有道理的,因爲該對象還沒有被創建,該函數不能被調用,但是當它運行並且我已經將適當的smo類型的對象傳遞給它時它就會存在。

+0

重新格式化代碼;如果不正確請回復。 – trashgod 2010-06-19 04:02:11

回答

4

由於Java有靜態語法檢查,所以在運行程序之前,需要知道對象的正確類型。由於它沒有任何形式的type inference,所以程序員有責任在源代碼中聲明它們。

這意味着,要實際調用smo的方法get_spoon()一個smo對象上必須聲明,這將是該類型的,而不是隻是一個Object(這是在Java最不具體的可能的類型):

void print_smo(smo test) 
{ 
    test.get_spoon(); 
} 

這將工作..並會讓你打電話給oneBoot.print_smo(new smo())

兩個旁註:

  • 類的名稱應該是camelcased這樣:ClassName
  • 方法和變量應太多,但駝峯格式不第一個字母,例如:myLongVariable
+1

我剛問完答案後,立刻就找到了。 http://java.sun.com/docs/books/tutorial/java/javaOO/arguments.html 謝謝你。 – Prospero 2010-06-19 03:59:43

+1

@Doodle:您應該通過點擊勾號來接受這個答案。你也應該回到你的舊問題,並標記適當的答案被接受。 – 2010-06-19 04:09:56

+0

@Adam Robinson::P等待時間:) – Prospero 2010-06-19 06:44:23