2015-05-18 17 views
1

我正在學習java的基礎知識,我完全不知道爲什麼我不能在主要方法中使用類。有人可以告訴我我的代碼出錯了嗎?在java中使用多個類?

主類


package Base; 
    class Game { 
     public static void main(String[] args){ 
      Data gameData = new Data(); 
      gameData.test(); 
      System.out.println(score); 
    } 
} 

package Base; 

public class Data { 
    public void test(){ 
     int score = 100; 

    } 
} 
+3

所以,你甚至不打算提的問題是什麼? – John3136

回答

2

您的代碼存在的問題是您的main方法試圖訪問類Data的本地變量。與字段和函數不同,其他類的局部變量對嵌套的同一級別的類是禁止的*

爲了解決這個問題,使scoreData一個成員變量,並添加一個getter方法做訪問:現在

public class Data { 
    // Declaring score here makes it an instance variable 
    private int score; 
    // Giving score a getter lets others access the value, 
    // but it does not let them set the new score 
    public int getScore() { return score; } 
    // test() method can be used to set the score to a specific value 
    public void test(){ 
     score = 100; 
    } 
} 

main方法可以通過調用getScore()訪問來自Datascore,像這樣:

public static void main(String[] args){ 
    Data gameData = new Data(); 
    gameData.test(); 
    System.out.println(gameData.getScore()); 
} 

*嵌套類可以訪問最終局部變量Ø在其中創建實例的f函數。

1

可變score是僅在Data類中的方法test()範圍內,它不調用test()返回後繼續存在。在主

public int test() { 
    int score = 100; 
    return score; 
} 

那麼你將存儲返回與調用test()

而不是僅僅在test()聲明score你可以返回它

int score = gameData.test(); 

此時它會打印出你想要的分數。

1

例如,你可以在遊戲中類參數得分添加到數據類這樣

package Base; 

public class Data { 
    public int score = 0; 
    public void test(){ 
     score = 100; 
    } 
} 

然後:

package Base; 
    class Game { 
     public static void main(String[] args){ 
      Data gameData = new Data(); 
      gameData.test(); 
      System.out.println(gameData.score); 
    } 
}