QUESTÃO 2. (2.5 PONTOS) Responda as seguintes perguntas:
O que é polimorfismo na POO e mencione dois tipos (explicando em que consiste cada tipo)

Passo 1

O enunciado pergunta o que é polimorfismo em programação orientada a objetos (POO) e pede para mencionar dois tipos, explicando cada um. Para resolver, vamos definir o conceito geral de polimorfismo e depois detalhar o funcionamento de dois dos seus principais tipos.

Passo 2

Polimorfismo em POO é a capacidade de tratar objetos de classes diferentes de forma uniforme, ou seja, a mesma mensagem (método) pode ser processada de maneiras distintas conforme o tipo real do objeto. Por aí, torna-se possível escrever código mais genérico e extensível, já que o comportamento específico é delegado às classes concretas.

Passo 3

O primeiro tipo é o polimorfismo de sobrecarga (ad-hoc ou estático). Nesse caso, vários métodos compartilham o mesmo nome, mas diferem na lista de parâmetros (número, tipo ou ordem). Na hora da compilação, o compilador escolhe qual versão chamar a partir dos argumentos.
Exemplo em Java:
void imprimir(int x) \{ \ldots \}  
void imprimir(String s) \{ \ldots \}  
Aqui, chamar imprimir(10) invoca o primeiro, enquanto imprimir("olá")á invoca o segundo.

Passo 4

O segundo tipo é o polimorfismo de inclusão (ou de subtipo, também chamado dinâmico ou overriding). Nele, uma subclasse altera a implementação de um método herdado da superclasse. Em tempo de execução, a chamada ao método invocado sobre referências de tipo genérico ( \text{Supertipo ref}) chama sempre a versão da classe concreta do objeto ( ref.metodo()).
Exemplo em Java:
class Animal \{ void emitirSom() \{ System.out.println("...?\"); \} \}  
class Cachorro extends Animal \{ @Override void emitirSom() \{ System.out.println("Au au"); \} \}  
Animal a \(=\) new Cachorro();  
a.emitirSom(); // imprime "Au au" em tempo de execução  

Resposta

Polimorfismo é a propriedade que permite a um mesmo nome de método se comportar de formas diferentes conforme o tipo do objeto.
Dois tipos principais:
( 1) Polimorfismo de sobrecarga (ad-hoc/estático): métodos com mesmo nome, assinaturas diferentes, resolvidos em compilação.
( 2) Polimorfismo de inclusão (subtipo/dinâmico): método herdado é sobrescrito pela subclasse e a decisão de qual versão usar ocorre em tempo de execução.

Exercícios relacionados