Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida no Ex. 1 da Aula 5 - Polimorfismo

Eu entendi a resposta certa, mas o que eu não entendo é o seguinte: ex: A classe Conta tem os atributos "x,y, z" e a ContaPoupanca, que herda de Conta, tem os atributos "i, h". Se eu falo q a ContaPoupanca herda de Conta, significa que ela pode utilizar os atributos "x,y,z" e os atributos "i,h".

Quando eu declaro: Conta c = new ContaPoupanca() Eu estou dizendo para criar uma instancia de ContaPoupanca, que possui todos os atributos e + "i,h", e colocar ela numa variavel do tipo Conta que não possui "i,h", então como que é possível essa declaração?

1 resposta
solução!

Oi Paulo,

É possível justamente pelo mecanismo do polimorfismo. Quando vc faz new ContaPoupanca(), a JVM aloca espaço cria o objeto com tudo, o "x, y, z, i, h". Mas, como a referência pra esse objeto é um Conta c, então a JVM, quando se referencia pra esse objeto, usando essa referência, só consegue enxergar tudo que está em Conta.

Parece meio estranho à princípio. Eu sei. Mas, mais pra frente, quando você começar a ver mais usos de polimorfismo (faça o curso de padrões de projeto depois), vc vai entender que isso é legal.

Veja que se vc tem um método qualquer, void acao(Conta c), podemos passar pra ele qualquer tipo de Conta. Isso nos permite criar novos tipos de conta (usando herança), e passar pra esse método aí, sem precisarmos mudar nada nele! Essa é a vantagem!

Um abraço!