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

Aula 4 - Exercício 2 - Java II - Classes Abstratas

Prezados, Alguém poderia explicar melhor esse exercício 2? "Esse código é possível, sim, e muito útil! Um método que receba uma Conta como argumento poderá trabalhar com qualquer objeto que seja uma Conta. Isto é, a classe Conta serve como um agrupador de tipos e o polimorfismo ainda é possível!" Onde irei criar o meu método? public void metodoDeConta(Conta c) { } ??

Obrigado!

2 respostas
solução!

Oi Bruno, tudo bom?

Não encontrei o método public void metodoDeConta(Conta c) { } no exercicio. Você poderia me mostrar onde ele está?

Quanto ao exercicio, a ideia é que a partir de agora nossa Conta é uma classe abstrata. Ou seja, não podemos instanciar alguém do tipo Conta somente classes filhas. Por isso precisamos trocar para new Conta Corrente(). A partir disso o exercicio pergunta qual a vantagem de termos a classe Conta no nosso projeto se não vamos criar ninguém do tipo Conta e sim ContaCorrente ou ContaPoupanca.

E a vantagem é justamente o polimorfismo. Com a classe conta conseguimos definir o que é uma conta para o Java e a partir disso podemos nos referenciar a todos que são contas (ou seja, conta e suas filhas) da mesma forma!

Usando seu método como exemplo:

public void metodoDeConta(Conta c)

Aqui, podemos passar tanto uma referencia a uma ContaCorrente quanto uma referencia a ContaPoupanca. E mais, se um dia nosso sistema crescer e precisarmos criar uma ContaSalario e herdamos de Conta, ela também passará no método =)

Essa é uma das vantagens do polimorfismo! Temos um código muito mais flexivel!

Espero ter ajudado. Qualquer dificuldade, compartilhe com a gente!

Olá, André. Muito grato pela sua explicação.

O método public void metodoDeConta(Conta c) { } de fato não existe no código. Apenas era essa a dúvida. "Onde criar? Pra que vai servir? Qual será o corpo do método? Posso passar ContaPoupança e ContaCorrente no parâmetro mesmo o parâmetro sendo de Conta?"

Mas já esclareceu, minha dúvida. Muito obrigado :D

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software