Estou alterando o código de um jogo, más estou com muita dificuldade para acessar o método getGold da classe Player, quando eu extendo ela na minha classe, o eclipse me da este erro:
Implicit super constructor Player() is undefined for default constructor. Must define an explicit constructor
Quando eu passo o mouse em cima ele me dá 3 sugestões:
Já tentei com as três más cada um da um erro.
Alguém pode me ajudar a ter acesso ao método getGold de alguma forma sem ter que acessar a classe ou se não ajudar a resolver esse erro pra eu acessa lá?
O erro está bastante claro, a superclasse não possui um construtor sem parâmetros, você terá de invocar o construtor parametrizado.
Não sei se entendi direito, mas acho que você disse para eu fazer isso:
try {
Player player = new Player(null);
player.setGold(5000);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Erro: " + e);
}
Ele me deu este outro erro:
java.lang.IllegalArgumentException: FCGO with null game.
Este FCGO acho que é FreeCol Game Object da classe GameObject, deve ta dando erro por ter setado null, acho que você não da pra me ajudar já que é uma coisa do jogo, tenho que descobrir o que setar ali
Você precisa passar a instância do jogo, um objeto do tipo Game.
Provavelmente está faltando você criar o construtor da classe Gold chamando o construtor da classe Player.
Algo ± assim:
public class Gold extends Player {
public Gold() {
super(new Game());
}
...
}
Tentei desta forma, mas também deu um erro:
Não consigo passar nada para ele porque preciso instanciar a classe Game na classe Gold, mas pra fazer isso eu preciso manda um objeto statement, como vou devolver se não consigo nem instanciar a classe? ‘-’
Vai por mim, não é você quem precisa instanciar o Game, você precisa recebê-lo como parâmetro.
De repente a classe Player nem foi projetada para ser estendida e você está quebrando a cabeça à toa.
Sugiro você questionar os próprios desenvolvedores do jogo e estudar a arquitetura dele, senão você vai ficar dando voltas e voltas sem entender o que está fazendo.
2 curtidas