Com o polimorfismo vamos ter um controle maior sobre as subclasses sem ter que nos preocupar especificamente com cada uma delas, pois cada uma terá autonomia para agir de uma meneira diferente.
Definição de polimorfismo em Java
Essas formas, em nosso contexto de programação, são as subclasses/objetos criados a partir de uma classe maior, mais geral, ou abstrata.
Polimorfismo é a capacidade que o Java nos dá de controlar todas as formas de uma maneira mais simples e geral, sem ter que se preocupar com cada objeto especificamente.
Mais uma vez, somente pela definição é muito complicado de entender.
Vamos partir para algo comum e de preocupação máxima de nosso curso de Java online: exemplos práticos.
Exemplo 1 de Polimorfismo: Aumento no preço dos carros
Vamos pra nossa loja de carros, onde você é o programador Java de lá.Lembra que aprendeu, através de exemplos, a criar uma classe bem genérica, chamada "Carro"?
E depois criamos várias subclasses, de fuscas, ferraris, gols etc.
Imagine que, todo ano, todos na empresa tem um aumento.
A Ferrari teve aumento de 5%. o fusca terá aumento de 3% e o gol terá de 1%.
Note que, embora todos sejam "Carro", cada objeto terá que calcular seu aumento de forma diferente, pois terão diferentes valores de aumento. Como criar, então, um método na superclasse que atenda todas essas necessidades diferentes?
Não é na superclasse que se resolve, mas nas subclasses, criando o método 'aumento()' em cada uma.
Ou seja, vai criar vários métodos, e para fazer o aumento realmente ocorrer de maneira correta, é só invocar o método do objeto específico.
Então: objetoFerrari.aumento() é diferente de objetoFusca.aumento().
Note que usamos o mesmo nome do método para todas as subclasses, porém cada método é diferente um do outro.
Isso é o polimorfismo em ação: embora todos os objetos sejam "Carro", eles terão uma forma diferente de agir, pois implementamos os métodos de maneira diferente.
Apenas invocamos, e todo objeto sabe exatamente o que fazer.
Por isso o nome polimorfismo, pois cada objeto terá sua forma própria de como rodar, pois os métodos 'aumento()' dos objetos são diferentes.
Outra vantagem do polimorfismo: você já viu que, criando o método aumento() em toda as subclasses, ela agirão de maneira independente da superclasse e diferente de outros objetos.
Agora, quando chegar outro carro na sua loja você de adicionar o método aumento(), e terá um novo tipo de objeto, sem grandes alterações no código.
Exemplo 2 de Polimorfismo: animais mugindo, latindo, berrando...
Imagine que você é o criador do joguinho Colheita feliz ou Fazenda Feliz (sei lá), onde terá vários bichos nesse jogo.
Como você é esperto, vai logo abstrair e criar uma classe "Animal" com as características que todos tem: idade, peso, espécie etc.
Porém, nesse game, os animais fazem seu som característico: o cachorro late, o gato mia, o pinto pia, a vaca muge etc.
E aí? Como criar um método na superclasse que sirva para todos estes animais?
Ora, não cria, pois cada animal age diferente nesse aspecto.
Veja, polimorfismo é isso: embora objetos sejam da mesma superclasse, vão agir de maneira diferente em algum aspecto. Ou seja, terão várias(poli) formas diferentes (morfismo).
A saída é criar um método chamado 'som()' na superclasse (só o cabeçalho, como veremos nos próximos tutoriais) e em cada subclasse criar um método diferente, que caracterize cada bicho.
Veja que se não fizéssemos isso e invocássemos os métodos: vaca.som(), cachorro.som(), gato.som(), todos iriam fazer o mesmo barulho.
Com o polimorfismo: vaca.som() faria a vaquinha mugir, cachorro.som() faria o cachorro latir e gato.som() faria o objeto miar.
Porém, todos continuam sendo, também, objetos da classe "Animal".
E quando chegar mais animais na sua fazenda, adicione o método som() nesse animal, de modo que ele poderá agir conforme suas características.
Resumindo: polimorfismo permite que uma mesma superclasse possua subclasses com características - ou formas - diferentes.
24 comentários:
Muito bom cara! Bem explicado, simples de entender! Muito obrigado pela ajuda! Abraço!
O senhor e uns dos caras que nos iniciantes devemos dar muito obrigado, pois o fato do senhor compartilhar o seu conhecimento dessa forma e maravilhoso para os poucos que busca uma ajuda. Mais uma vez obrigado pelo seu trabalho.
Vlw, muito Bom.. Continue Assim :D
Todos citam o polimorfismo como um bicho de sete cabeças, mas vocês deixaram bem fácil de entender o conceito (que é o mais importante).
Parabéns pelo excelente trabalho!
Excelente! Casei de assistir vídeo aulas e não entender.Muito bom sua explicação
Muito bom Parabéns!!!! Entendi o conceito. obrigado!!!
Waaa muito bem explicado! Obrigada ( ̄▽ ̄)ノ
Muito bom como o resto de seu tutorial!
Parabéns, excelente conteúdo.
Explicação clara e de fácil entendimento.
Parabéns!!! Tem um dom de explicar as coisas que é uma beleza!!! Deus te abençoe grandemente por compartilhar seu grande (e ótimo) conhecimento! abraços! ô/
Muito bom este seu trabalho! Parabéns.
Muito bom.. Vai ser muito útil ..
Muito bem explicado excelente. Finalmente alguém com jeito para explicar isso.
Obrigado
Só consegui entender com seu texto, obrigado !
Cara, estava lendo um livro e não estava entendendo esse conceito, com sua explicação consegui compreender de forma mais clara.
Obrigado pela dica.
Muuuuiito bom! Ótima explicação
Muito Bom!!! Obrigado!!!
Muito bom cara! Valeu... Finalmente entendi. :)
Ótima sua explicação parabéns!
Queria agradecer pela bela explicação, muito obrigado mesmo!
Parabéns pela didática e clara explicação. Estou adorando o Java Progressivo, estou aprendendo muita coisa de forma bem simples graças a você(s). Obrigado!!!
Muito bom a linguagem e os exemplos que usou obrigado ficou mais claro fácil de entender, todos os que sabem dizem e fácil fácil mas para quem esta aprendendo como eu muitas vezes olhamos e olhamos mas não enxergamos as mesmas coisas como quem sabe!
Ótima explicação !!
Excelente explicação!
Postar um comentário