簡體   English   中英

Java對象范圍,從方法引用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM