Почему я не могу получить доступ к экземпляру класса, который создан в конструкторе (Java) - PullRequest
0 голосов
/ 04 апреля 2020

Чтобы предвосхитить вопрос, я очень новичок в 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" экземпляра.

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());
    }
}

1 Ответ

1 голос
/ 04 апреля 2020

Сделайте игрока переменной класса.

Поместите кого-нибудь в свой класс:

Player player;

и измените код вашего конструктора на:

player = new Player("Bob");

Это называется ошибка области видимости. Переменная, которую вы хотите сделать доступной для ВСЕХ методов класса, должна быть объявлена ​​В классе, а не в ОДНОМ методе c (в вашем случае вы сделали это в конструкторе)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...