为什么我不能访问在构造函数(Java)中创建的类的实例,所以

问题描述 投票:0回答:1

为了提出这个问题,我是Java的新手。

我有称为Game,Player和SystemIO的类。我的main()在Game类中。下面是它的代码

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

一旦调用SystemIO,它的构造函数将创建带有行的Player实例

 Player player = new Player("Bob");

Player构造函数将1个参数作为字符串。

在SystemIO类中,我还有一个方法可以从“播放器”实例中访问信息。

player.getName();

[当我尝试执行此操作时,控制台会报告SystemIO.java:339:错误:找不到符号

我已经检查过,我没有试图用大写的“ Player”来引用类名。就像我说的那样,我对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());
    }
}
java constructor scope instance
1个回答
1
投票

使播放器成为类变量。

将您的班级中的某人放置:

Player player;

并将您的构造函数的代码更改为:

player = new Player("Bob");

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

© www.soinside.com 2019 - 2024. All rights reserved.