1
resposta

Aonde está o erro? Jogo do Luan

Fiquei com dúvida do pq está sendo feita atribuição de objetos diferentes no código abaixo:

public class Jogo {
    //Código omitido
    private Componente comp;
    public Jogo(Usuario usuario){
       this.comp = usuario;
    }
}

o this não retorna o atributo da classe, nesse caso comp?

1 resposta

Oie Luis, tudo bem contigo?

O problema do código está em tentar salvar a referência de um objeto do tipo "Usuario" dentro de uma variável que só guarda referências do tipo "Componente". Ou seja, o certo deveria ser o seguinte:

public class Jogo {

    private Componente comp;
    public Jogo(Compomente comp){
       this.comp = comp;
    }
}

ou assim:

public class Jogo {

    private Usuario usuario;
    public Jogo(Usuario usuario){
       this.usuario = usuario;
    }
}

Ou ainda dessa forma caso dentro de um objeto do tipo "Componente" possa se guardar uma referência do tipo "Usuário":

public class Jogo {
    private Componente comp;
    public Jogo(Usuario usuario){
       this.comp.usuario = usuario;
       // ou assim caso exista um método set para isso: this.comp.setUsuario = usuario;     
    }
}

O "this" serve para pegar o atributo referente a classe em que está e geralmente é usado nos casos em mostrei acima, quando dentro de um método o nome da variável do parâmetro é o mesmo do atributo da classe.

Espero ter ajudado!

Se tiver qualquer outro problema estarei por aqui :)