Explique o que é o polimorfismo. Cite dois exemplos.

Passo 1

O enunciado pede para explicar o que é polimorfismo na programação orientada a objetos e citar dois exemplos. Para isso, vamos primeiro definir o conceito de forma clara e, em seguida, mostrar dois casos práticos que ilustram polimorfismo em ação.

Passo 2

Polimorfismo é um princípio de programação orientada a objetos que permite que objetos de classes diferentes sejam tratados através de uma interface comum. Na prática, isso significa que o mesmo nome de método ou operador pode se comportar de maneiras distintas dependendo do objeto que o invoca.

Passo 3

Exemplo 1 – Polimorfismo em tempo de compilação (sobrecarga de método):
Em muitas linguagens, podemos definir várias versões de um mesmo método com assinaturas diferentes (número ou tipo de parâmetros). O compilador escolhe qual versão chamar com base nos tipos dos argumentos. Por exemplo, uma classe Calculadora pode ter:
int soma(int a, int b) // soma de dois inteiros 
double soma(double x, double y) // soma de dois reais 
Aqui, o método soma tem comportamento distinto dependendo dos parâmetros, mas mantém o mesmo nome.

Passo 4

Exemplo 2 – Polimorfismo em tempo de execução (sobrescrita de método):
Imagine uma classe base Animal com um método emitirSom(), e duas classes filhas Cachorro e Gato que estendem Animal:
class Animal {
 void emitirSom() {
 System.out.println("Som genérico");
 }
}

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

class Gato extends Animal {
 @Override
 void emitirSom() {
 System.out.println("Miau");
 }
}
Se tivermos
Animal a\(1=\) new Cachorro();
Animal a\(2=\) new Gato();
a1.emitirSom(); // imprime "Au au"
a2.emitirSom(); // imprime "Miau"
o método chamado depende da classe concreta do objeto em tempo de execução.

Resposta

Polimorfismo é a capacidade de usar uma mesma interface (nome de método ou operador) para comportamentos diferentes conforme o tipo do objeto. Dois exemplos são:
(a) sobrecarga de método (polimorfismo em tempo de compilação) e
(b) sobrescrita de método (polimorfismo em tempo de execução).

Exercícios relacionados