Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Duvida: curso-certificacao-java-heranca/exercicio-exercicio-3

Bom dia.

Qual seria a diferença de eu inverter a ordem do casting nesse exercicio

Original: D d = (D)(C) new D();

Alterado: D d = (C)(D) new D();

quando eu altero pra essa sequencia ele nao compila, qual seria a importacia dessa ordem?

2 respostas
solução!

Oi Jose, tudo certo?

Nesse caso do cast, no primeiro código:

D d = (D)(C) new D();

Primeiro fazemos o cast pra C, o que compila, pois C é superclasse de D. E depois fazemos o cast pra D novamente. O código não só compila como executa e imprime 1.

O problema de alterar a ordem do cast é que nesse caso:

D d = (C)(D) new D();

Primeiro fazemos o cast pra D (já é do tipo D) e depois pra (C). Até aqui tudo certo. O problema é tentar atribuir esse objeto agora do tipo C para uma variável do tipo D. Por isso não compila.

Isso aqui seria válido, pois a variável que estamos atribuindo é do tipo C.

C d  = (C) (D) new D();

Faz sentido? Se a dúvida persistir continuamos a conversa.

Abraço!

Bom dia Lucas,

Entendi sim, sua explicaçao foi muito boa. Obrigado.