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)
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:
Exemplo em Java:
void imprimir(int x) \{ \ldots \}
void imprimir(String s) \{ \ldots \}
Aqui, chamar
invoca o primeiro, enquanto
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 (
) chama sempre a versão da classe concreta do objeto (
).
Exemplo em Java:
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:
( ) Polimorfismo de sobrecarga (ad-hoc/estático): métodos com mesmo nome, assinaturas diferentes, resolvidos em compilação.
( ) 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.
Dois tipos principais:
(
(