Explicação para uma dúvida sobre TypeCast

3 respostas
C

Seguinte galera,
Eu estou fazendo umas peripércias aqui no java para firmar conhecimento apenas, então me deparei com uma coisa que o "eclipse" resolveu pra mim automaticamente, mas eu gostaria de saber o pq ele fez isso, sera alguém pode me dar uma explicação ??

seguinte,
eu tenho uma classe Tela com um método por exemplo "setNome" e esse método recebe como parâmetro uma String.

Tb tenho uma classe que estende a outra no caso "Administrador que estende Usuario", por exemplo o Usuario possui os atributos login, senha e o administrador tem um atributo a mais que é matrícula. Então estou jogando para meu objeto Tela "Matricula: mat"

Então por exemplo eu criei assim

Usuario usu = new Administrador ("Login","senha",123);

Tela tela = new Tela();

//aqui está a minha dúvida
tela.setNome("Matricula:"+((Administrador) usu).getMatricula());

Eu entendi o seguinte, eu sei que tenho que dizer a aplicação o usu é Usuário porém ele é do tipo Administrador q para poder executar o método getMatricula, mas pq no caso ele colocou isso entre parênteses -> ( (typecast) usu ).metodo ?

Obs.:" Por favor, não se ligue na logica que postei , eu sei que poderia por Administrador usu = new Administrador(parametros), eu so bolei aqui um jeito objetivo de fazer a pergunta.

abssss e obrigado pela atenção

3 Respostas

P

ao fazer

Usuario usu = new Administrador ("Login","senha",123);

você está usando uma referência da classe Usuário, para um instância de Administrador
como sua classe Usuario não possui o método getMatricula(), é necessario fazer o cast, pois o compilador só irá saber qual é a instância utilizada em tempo de execução.

Me corrijam se estiver errado

jopss

exato…
e fazendo

((Administrador) usu).getMatricula()

primeiro resolve-se o cast do parametro, tornando getMetricula acessivel…

jopss

C

No caso então é como se fosse uma operação matemática do tipo

x = (1+1)*1;

Ele resolve o que está dentro do parenteses antes de procurar o método ?

Abss e grato pelas explicações.

Criado 24 de setembro de 2008
Ultima resposta 24 de set. de 2008
Respostas 3
Participantes 3