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). Essa funcionalidade é caracterizada quando duas ou mais classes distintas têm métodos de mesma estrutura (tipo de retorno e assinatura), 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.

Isso pode ser feito tanto pelo uso do relacionamento de herança como pelo relacionamento de realização/implementação. Por exemplo, a interface ITempo define uma operação (método abstrato) cuja estrutura é public boolean ehUltimoSegundoDoTempo(). A referida oprotecperação é implementada em todas as classes que realizam a interface “ITempo”, ou seja, no nosso exemplo, as classes “Tempo” e “NovoTempo” possuem implementações para a referida operação. Observem que a operação (estrutura) é a mesma, contudo o método (comportamento) é diferente.

Apesar de parecerem iguais, os métodos trabalham de forma diferente, pois as classes “Tempo” e “NovoTempo” implementam a mesma ideia de duas formas distintas. Deste modo, na classe “MainTesteTempo” o método “exibirTempo” demonstra o uso de um comportamento polimórfico, uma vez que o parâmetro do referido método é do tipo da interface “ITempo”. Ou seja, o método aceita como parâmetros objetos das classes “Tempo” ou “NovoTempo” sem qualquer tipo de problema, pois a interface “ITempo” padroniza a estrutura de interface das referidas classes “Tempo” e “NovoTempo”.

Copyright © 2016 AIEC.