Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

caezar

Polimorfismo

Recommended Posts

Pessoal creio ter entendido quase todo de polimorfismo, digo "quase" por somente um ponto que ainda tenho dúvidas.

 

Supondo que tenha a classe Animal e uma classe Tigre, sei que Tigre é um Animal portanto entende a classe Animal. Até aí ok. Para criar um objeto Tigre faço assim:

 

Tigre tigre = new Tigre();

 

Agora vem a dúvida: Vejo muito na net algo como isso:

 

Animal tigre = new Tigre();

 

Sei que se Tigre é um Animal podemos fazer como acima, mas não entendo qual a vantagem prática de se criar o objeto da forma abaixo.

 

Outro exemplo seria o ArrayList, que pelo o que me lembro herda List. Vejo muito os programadores escreverem desta forma:

 

List<String> lista = new ArrayList();

 

Invés de:

 

ArrayList<String> lista = new ArrayList();

 

Porque? Qual a vantagem prática de se usar a classe pai ao criar um objeto da classe filho?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então veja...

 

Você quer um sistema de gestão de zoológico, e neste sistema você tem uma Lista de animais... Então, veja só que interessante:

 

 

Animal chico = new Macaco();
Animal pantro = new Pantera();
Animal neymar = new Papagaio();
 
ArrayList<Animal> animais = new ArrayList<Animal>();
 
animais.add(chico);
animais.add(pantro);
animais.add(neymar);

 

Percebe?

E essa "brincadeira" pode ser mais complexa e cheia de possibilidades.

Como, por exemplo, permitir que apenas Aves sejam colocadas em Gaiolas (método engaiolar(Ave ave)), enquanto as Jaulas ficam reservada para outros animais (método enjaular(Animal animal)).

 

Isso tudo vai depende unico e exclusivamente do seu projeto.

 

Espero que tenha conseguido iluminar o seu caminho.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.