簡體   English   中英

為什么我無法訪問在構造函數中創建的 class 實例 ( Java )

[英]Why can I not access an instance of class that is created in a constructor ( Java )

作為問題的序言,我對 Java 很陌生。

我有名為 Game、Player 和 SystemIO 的類。 我的 main() 在游戲 class 中。 下面是它的代碼

public static void main(String[] args){
SystemIO systemIO = new SystemIO();
}

一旦 SystemIO 被調用,它的構造函數就會創建一個 Player 實例

 Player player = new Player("Bob");


其中 Player 構造函數將 1 個參數作為字符串。

在 SystemIO class 的更下方,我有一個方法可以從“玩家”實例訪問信息。

player.getName();

當我嘗試這樣做時,控制台報告
SystemIO.java:339:錯誤:找不到符號

我已經檢查過我沒有嘗試使用大寫的“播放器”來引用 class 名稱。 就像我說的,我對 Java 非常陌生,只是想把頭繞過去,我相信這是 scope 問題……但我不確定。

編輯以添加可重現的代碼:

游戲.java

package com.myapps;
import com.myapps.system.SystemIO;

public class Game{
    public static void main(String[] args){
        SystemIO systemIO = new SystemIO();
    }
}

播放器.java

package com.myapps.player;

public class Player{
    String name;
    public Player(String playerName){
        name = playerName;
    }
}

public String getName(){
    return name;
}

SystemIO.java

package com.myapps.system;
import com.myapps.player.Player;

public class SystemIO{
    public SystemIO(){
        Player player = new Player("Bob");
        readPlayerName();
    }

    public void readPlayerName(){
        System.out.println(player.getName());
    }
}

使播放器成為 class 變量。

將某人放入您的 class 中:

Player player;

並將構造函數的代碼更改為:

player = new Player("Bob");

這稱為 scope 錯誤。 您希望 class 的所有方法都可以訪問的變量應在 class 中聲明,而不是在一種特定方法中聲明(在您的情況下,您是在構造函數中進行的)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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