[英]Java object scope, referencing from a method
我無法在自己的腦海中找到合適的范圍。 我了解為什么下面的代碼行不通,但是我從概念上不了解我應該如何去做。
public class Game {
private String playerName = "";
private int numberOfPegs = 0;
private boolean gameRunning = "True";
public static void main(String[] args) {
Game game = new Game();
game.setupGame();
game.playGame();
}
public void setupGame() {
Display display = new Display();
Code code = new Code();
display.showGreeting();
playerName = display.getUserInput("Enter your name: ");
numberOfPegs = Integer.parseInt(display.getUserInput("How many pegs would you like?"));
code.generateNewCode(numberOfPegs);
}
public void playGame() {
String result = display.getGuess();
}
}
我知道為什么不能從playGame()
調用display.getGuess()
playGame()
,這是因為顯示超出了范圍。 我不知道如何正確執行此操作。 我是否為該方法創建了一個新的實例Display()
,只是感覺不正確。 在處理多個對象時,我感覺好像缺少面向對象的概念。
將display
設置為實例字段,然后在setupGame()
方法中對其進行初始化。
private String playerName = "";
private int numberOfPegs = 0;
private boolean gameRunning = "True";
private Display display;
public static void main(String[] args) {
Game game = new Game();
game.setupGame();
game.playGame();
}
public void setupGame() {
display = new Display();
Code code = new Code();
display.showGreeting();
playerName = display.getUserInput("Enter your name: ");
numberOfPegs = Integer.parseInt(display.getUserInput("How many pegs would you like?"));
code.generateNewCode(numberOfPegs);
}
public void playGame() {
String result = display.getGuess();
}
聲明成員時無需實例化成員。 當您聲明成員而不實例化時,它將采用其默認值; 對於數字類型為0
,對於boolean
類型為false
,對於Object
類型為null
。 所以在這種情況下
private int numberOfPegs = 0;
將與以下相同:
private int numberOfPegs;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.