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”.