Resolução da Questão
Alternativa D - Polimorfismo representa um conceito em que um mesmo nome (como uma variável, por exemplo) pode denotar objetos de diferentes classes que estão relacionadas por uma superclasse comum.
Introdução ao Conceito
O polimorfismo é um dos quatro pilares fundamentais da Orientação a Objetos (Junto com Encapsulamento, Herança e Abstração). O termo vem do grego, onde "poly" significa muitos e "morph" significa formas.
Em termos simples, ele permite que objetos de classes diferentes sejam tratados de maneira uniforme através de uma interface comum.
## Análise Detalhada
Vamos examinar cada alternativa para entender o raciocínio:
- Alternativa A (Incorreta): Descreve um tipo específico de polimorfismo (paramétrico) e foca em conversão de tipos genéricos. Embora existam esses mecanismos, essa não é a definição geral do polimorfismo em Orientação a Objetos clássica (subtipagem).
- Alternativa B (Incorreta): A herança é um mecanismo que facilita o polimorfismo, mas não o exige obrigatoriamente por "construção". Você pode ter uma hierarquia de classes herdadas sem nunca redefinir (override) métodos para mudar o comportamento.
- Alternativa C (Incorreta): Linguagens compiladas, como C++, Java e C#, possuem polimorfismo sim. Elas utilizam mecanismos como ponteiros para funções virtuais para realizar a "ligação tardia" (binding), permitindo que o código decida qual método executar durante a execução (runtime).
- Alternativa D (Correta): Esta é a definição clássica do polimorfismo de subtipos.
- Imagine uma variável chamada
animal do tipo Animal. - Essa mesma variável pode apontar para um objeto
Cachorro ou Gato (classes filhas). - Quando chamamos
animal.falar(), o sistema sabe exatamente qual implementação usar baseada na classe real do objeto (Cachorro latindo ou Gato miando). - Alternativa E (Incorreta): Linguagens dinâmicas como Python, Ruby e JavaScript são famosas justamente por sua implementação robusta de polimorfismo, muitas vezes utilizando conceitos como "Duck Typing" (se anda como pato e pia como pato, é um pato), onde os tipos são verificados menos rigidamente, mas o polimorfismo existe plenamente.
Resumo da Lógica
| Característica | Explicação |
|---|
| Definição | Capacidade de tratar objetos de classes distintas de forma uniforme. |
| Mecanismo | Geralmente envolve uma Superclasse e subclasses que redefinem métodos. |
| Benefício | Permite escrever código mais flexível e escalável (princípio de substituição de Liskov). |
A alternativa D captura perfeitamente essa ideia de uma variável única manipulando objetos de diferentes classes derivadas de um ancestral comum.