2014-01-27 30 views
0

我有兩個類:Board,Player。委員會類使用靜態方法來計算當玩家登上棋盤上的特定空間時發生的情況。從靜態方法內運行對象的方法

我將玩家對象p1傳遞給Board類。 Board類中的靜態方法之一需要訪問p1對象中的方法。我有一個基本的理解,靜態方法屬於類而不是實例,但是有沒有辦法訪問P1的方法,而不使P1爲靜態?

回答

0

Offcourse你可以調用播放器的實例方法,因爲你有參考Player對象

class Board{ 
    public static void land(Player p1){ 
    p1.performAction(); 
    } 
} 

你不能做什麼,是調用板類的一個實例方法,因爲不執行板類的靜態方法在一個實例的情況下。

因此,編譯器會吐出錯誤,如果你嘗試這樣做 -

class Board{ 
     public static void land(){ 
     performAction(); 
     } 
     private void performAction(){ 
       //instance method 
     } 

    } 

但是,您可以調用從另一個實例方法實例方法,下面將工作 - 因爲雖然從的performAction調用doAction() ()你已經在一個實例的背景下

class Board{ 

     private void performAction(){ 
       doAction(); 
     } 

     private void doAction(){ 
     } 
    }