O que é o polimorfismo? Explique e dê um exemplo.

Passo 1

O enunciado pergunta o que é o polimorfismo na Programação Orientada a Objetos e pede que a gente explique o conceito e dê um exemplo prático. Vamos primeiro definir o termo e depois mostrar um exemplo em código, para ficar mais claro.

Passo 2

Polimorfismo é a capacidade que objetos de diferentes classes relacionadas (por exemplo, numa hierarquia de herança) têm de responder de forma própria a uma mesma mensagem ou chamada de método. Em outras palavras, você trata várias classes como se fossem a mesma (o tipo mais genérico), mas cada uma executa a sua própria versão do comportamento.

Passo 3

Existem dois tipos principais de polimorfismo em linguagens orientadas a objetos:
1. Polimorfismo de subtipo (runtime): quando uma referência à classe base invoca um método sobrescrito em tempo de execução.
2. Polimorfismo paramétrico (compile-time): quando um método ou classe é escrito de forma genérica, usando, por exemplo, generics.

Passo 4

Exemplo em Java (polimorfismo de subtipo). Temos uma classe genérica Animal e duas subclasses que sobrescrevem o método fazerSom():
class Animal {
    void fazerSom() {
        System.out.println("Som genérico de animal");
    }
}

class Cachorro extends Animal {
    @Override
    void fazerSom() {
        System.out.println("Au au!");
    }
}

class Gato extends Animal {
    @Override
    void fazerSom() {
        System.out.println("Miau!");
    }
}

public class TestePolimorfismo {
    public static void main(String[] args) {
        Animal[] animais \(=\) { new Cachorro(), new Gato(), new Animal() };
        for (Animal a : animais) {
            a.fazerSom(); // cada objeto responde de forma diferente
        }
    }
}
Nesse código, o laço chama fazerSom() em uma variável do tipo Animal, mas em tempo de execução cada instância executa sua própria implementação do método.

Resposta

Polimorfismo é o princípio que permite tratar objetos de diferentes classes derivadas como se fossem do mesmo tipo base, fazendo com que cada um execute sua versão de um método comum. No exemplo acima, embora o array seja de Animal, cada Cachorro e Gato emite seu som particular quando fazerSom() é chamado.

Exercícios relacionados