Não entendi muito bem o exercício, pra mim não está compilando por causa que o atributo não está tipado (int, String, etc) e por ele ser privado. Poderia me explicar melhor.
Thank you ;)
Não entendi muito bem o exercício, pra mim não está compilando por causa que o atributo não está tipado (int, String, etc) e por ele ser privado. Poderia me explicar melhor.
Thank you ;)
Olá Renato,
o atributo está tipado sim, o tipo dele é Componente
. Ao criar uma classe e instanciá-la, você cria um objeto que será do tipo daquela classe.
Quanto a ser privado
, não é um problema pois ele só está sendo chamado dentro da própria classe - ele só não é visto fora da classe.
O código é o seguinte:
public class Jogo {
//Código omitido
private Componente comp;
public Jogo(Usuario usuario){
this.comp = usuario;
}
}
e a linha da atribuição é a
this.comp = usuario;
Porém o atributo comp
é um objeto do tipo Componente
enquanto usuario
é um objeto do tipo Usuario
e você não pode atribuir um ao outro, ou seja, eles são objetos diferentes!
Tipos como String
, int
são do próprio java (por exemplo, Classe String) mas ao criar uma classe e instanciar, você cria um novo objeto do tipo da sua classe.
Espero que tenha compreendido... qualquer coisa manda aqui que a gente dá uma força ;)
Opa, Renato.
public class Jogo {
//Código omitido
private Componente comp;
public Jogo(Usuario usuario){
this.comp = usuario;
}
}
O atributo comp
está tipado! O tipo é Componente
.
O fato de ser private
impede o acesso (pra leitura e escrita) de outras classes. Como o código está no construtor da própria classe Jogo
, o acesso ao atributo comp
é permitido.
O erro é que estamos tentando pôr um Usuario
em um atributo do tipo Componente
. Não encaixa!
Por isso, a resposta é:
Está sendo feita uma atribuição de objetos de tipos diferentes.
Tais e Alexandre, muito obrigado pela ajuda. ;)