Essa é bem fácil, é uma dúvida que eu tenho desde criança:
Digamos que eu crie uma classe A, com os atributos a1 e a2. Aí eu crio a classe B, que extends A e tem os atributos b1 e b2. Assim a classe B na verdade tem os atributos a1, a2, b1 e b2, certo?
Se eu armazenar uma instância de B num objeto da classe A eu vou perder os valores dos atributos b1 e b2? Isto é, se eu fizer:
B objb = new B(valorParaA1,valorParaA2,valorParaB1,valorParaB2);
A obja = objb;
B objb2= ( (B) obja );
if( objb2.b1 == null && objb2 == null) { this.fazAlgumaCoisa(); }
O método fazAlgumaCoisa será chamado ou não? Caso os valores atributos b1 e b2 de objb2 seja iguais aos ve objb, como isso acontece?Sim, porque eles tiveram de "passar" por um objeto cuja classe não tem onde guardá-los. Onde eles ficam armazenados?
Agradeço qualquer tentativa.
( Se eu estiver ficando é doido, me avisem! :) )