为什么我无法访问在构造函数 ( Java ) 中创建的 class 实例

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

作为问题的序言,我是 Java 的新手。

我有 classes 调用,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" 实例访问信息。

player.getName();

当我尝试这样做时,控制台报告
SystemIO.java:339: 错误: 找不到符号

我已经确认我没有尝试使用大写 "Player." 来引用 class 名称 就像我说的那样,我对 Java 非常陌生,只是想全神贯注,我相信这是一个范围问题……但我不确定。

编辑以添加可重现的代码:

Game.java

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

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

Player.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");

这称为范围错误。您希望 class 的所有方法都可以访问的变量应该在 class 中声明,而不是在一个特定的方法中声明(在您的情况下,您是在构造函数中完成的)