¿Por qué no puedo acceder a una instancia de la clase que se crea en un constructor (Java)

theraveboss:

Escribir el prólogo de la pregunta, soy muy nuevo en Java.

Tengo clases llamadas, juego, jugador, y SystemIO. Mi principal () está en la clase de juegos. A continuación se muestra su código

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

Una vez SystemIO se llama, es crea una instancia de jugador con la línea

 Player player = new Player("Bob");


donde el constructor jugador toma 1 argumento como una cadena.

Más abajo, en la clase SystemIO tengo un método que tiene acceso a la información de "jugador" de la instancia.

player.getName();

Cuando trato de hacer esto, la consola informa
SystemIO.java:339: Error: No se puede encontrar el símbolo

He comprobado que no estoy tratando de hacer referencia al nombre de la clase con un capital "jugador". Como dije, soy muy nuevo en Java y tratando de envolver mi cabeza alrededor de ella y yo creo que es un problema de alcance ... pero no estoy seguro.

Editar para añadir código reproducibles:

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());
    }
}
Tom De Coninck:

Hacer jugador de una variable de clase.

Poner a alguien en su clase:

Player player;

y cambiar el código de su constructor para:

player = new Player("Bob");

Esto se llama un error de alcance. Una variable que desea ser accesible a todos los métodos de la clase, debe ser declarada en la clase y no en un método específico (en su caso, que lo hizo en el constructor)

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=404197&siteId=1
Recomendado
Clasificación