[RESOLVIDO] Dúvida em questão sobre herança e cast

2 respostas
calel

class Building { } public class Barn extends Building { public static void main(String[] args) { Building build1 = new Building(); Barn barn1 = new Barn(); Barn barn2 = (Barn) build1; Object obj1 = (Object) build1; String str1 = (String) build1; Building build2 = (Building) barn1; } }
Which is true?
A. If line 10 is removed, the compilation succeeds.
B. If line 11 is removed, the compilation succeeds.
C. If line 12 is removed, the compilation succeeds.
D. If line 13 is removed, the compilation succeeds.
E. More than one line must be removed for compilation to succeed.
Answer: C

Não entendi pq uma instancia de Building pode ser convertida para Barn, de acordo com o que eu havia entendido, essa conversão só funcionaria se build1 fosse a Barn =/

2 Respostas

ViniGodoy

Quando for postar questões como essa, procure respeitar os espaçamentos. Note que no código que você colocou aí, nem linha 12 tem.

De qualquer forma, isso já foi respondido em:
http://www.guj.com.br/java/222088-questao-sobre-cast

A linha 12 deve ser removida, porque não existe qualquer relação entre Building ou Barn com a classe String.

As outras conversões são todas permitidas durante a compilação. Não quer dizer que não possa haver um erro de execução (o que provavelmente acontecerá ao rodar esse programa, já que o build1 não é um Barn).

calel

thanks!

Criado 27 de março de 2011
Ultima resposta 28 de mar. de 2011
Respostas 2
Participantes 2