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?
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?
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.