Daves Balthazar

019 – POLIMORFISMO em Programação Orientada a Objeto – POO

Playlist do Curso de Programação Orientada a Objetos POO

Polimorfismo em Programação Orientada a Objeto – POO
Na programação orientada a objetos, o polimorfismo permite que referências de tipos de classes mais abstratas representem o comportamento das classes concretas que referenciam. Assim, é possível tratar vários tipos de maneira homogênea (através da interface do tipo mais abstrato). O termo polimorfismo é originário do grego e significa “muitas formas” (poli = muitas, morphos = formas).

O polimorfismo é caracterizado quando duas ou mais classes distintas têm métodos de mesmo nome, de forma que uma função possa utilizar um objeto de qualquer uma das classes polimórficas, sem necessidade de tratar de forma diferenciada conforme a classe do objeto.[1]

Uma das formas de implementar o polimorfismo é através de uma classe abstrata, cujos métodos são declarados mas não são definidos, e através de classes que herdam os métodos desta classe abstrata.

Tipos de polimorfismo

Existem quatro tipos de polimorfismo que a linguagem pode ter (atente para o fato de que nem toda linguagem orientada a objeto tem implementado todos os tipos de polimorfismo):

Universal
Inclusão – um ponteiro para classe mãe pode apontar para uma instância de uma classe filha (exemplo em Java: List lista = new LinkedList(); (tipo de polimorfismo mais básico que existe)
Paramétrico – se restringe ao uso de templates (C++, por exemplo) e generics (C#/Java)
Ad-Hoc
Sobrecarga – duas funções/métodos com o mesmo nome mas assinaturas diferentes
Coerção – conversão implícita de tipos sobre os parâmetros de uma função