Questão de TI - Desenvolvimento de Sistemas — Conceitos Básicos de Orientação a Objetos (Classe, Objeto, Encapsulamento, Herança, Polimorfismo) — VUNESP 2023
TI - Desenvolvimento de Sistemas›Conceitos Básicos de Orientação a Objetos (Classe, Objeto, Encapsulamento, Herança, Polimorfismo)
Código
vu196827
Banca
VUNESP
Órgão
TRF 3
Ano
2023
Cargo
TJ TRF3
No âmbito da programação orientada a objetos, utiliza-se o conceito de polimorfismo, sobre o qual é correto afirmar que:
Aassocia-se o mesmo nome para mais de um método, normalmente contendo códigos distintos entre si.
Bo número de atributos e de métodos deve ser o mesmo em todas as classes do programa.
Cdeve haver um único nome para todos atributos e métodos contidos no programa.
Dcada classe somente pode comportar um único método.
Eos métodos com o mesmo nome devem ser compilados em compiladores distintos entre si.
Revelar gabarito e comentário▾
GabaritoA — associa-se o mesmo nome para mais de um método, normalmente contendo códigos distintos entre si.
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Polimorfismo em Programação Orientada a Objetos
Gabarito: letra A. Polimorfismo é o princípio da orientação a objetos que permite que um mesmo nome de método seja usado para implementações diferentes, cada uma com seu próprio código, selecionado em tempo de execução conforme o tipo do objeto. É exatamente o que a alternativa A descreve: "associa-se o mesmo nome para mais de um método, normalmente contendo códigos distintos entre si".
O polimorfismo é um dos quatro pilares fundamentais da programação orientada a objetos, ao lado de encapsulamento, herança e abstração. A palavra vem do grego: polys (muitos) + morphos (formas) — ou seja, "muitas formas". Na prática, significa que uma mesma interface (assinatura de método) pode se comportar de maneiras diferentes dependendo do objeto que a invoca. Isso é possível graças à herança e à implementação de interfaces: uma classe filha pode sobrescrever (override) um método da classe pai, mantendo o mesmo nome e parâmetros, mas alterando o comportamento interno.
Existem dois tipos principais de polimorfismo em linguagens como Java, C# e C++:
Polimorfismo de sobrecarga (overloading): ocorre quando uma classe define vários métodos com o mesmo nome, mas com listas de parâmetros diferentes (quantidade ou tipos). O compilador decide qual método chamar com base nos argumentos passados. É um polimorfismo estático (resolvido em tempo de compilação).
Polimorfismo de sobrescrita (override): ocorre quando uma subclasse redefine um método herdado da superclasse, mantendo a mesma assinatura (nome e parâmetros), mas com implementação própria. É um polimorfismo dinâmico (resolvido em tempo de execução), e é a base do conceito de "ligação tardia" (late binding).
Um exemplo clássico: imagine uma classe base Animal com o método emitirSom(). As classes Cachorro e Gato herdam de Animal e sobrescrevem emitirSom() — o cachorro imprime "Au au" e o gato imprime "Miau". Se você tiver uma lista de Animal contendo um Cachorro e um Gato, ao chamar emitirSom() em cada um, o comportamento será diferente, mesmo que a chamada seja idêntica. É isso que permite escrever código genérico que funciona com qualquer subtipo.
A pegadinha desta questão está em confundir polimorfismo com outros conceitos de POO, como a exigência de uniformidade de atributos/métodos entre classes (alternativa B), a unicidade de nomes (alternativa C), a limitação de um método por classe (alternativa D) ou a necessidade de compiladores distintos (alternativa E). Nenhuma dessas ideias tem relação com o polimorfismo — são distratores que testam se o candidato realmente entende o conceito.
Guarde o critério decisivo: polimorfismo = mesmo nome de método, comportamentos diferentes. É essa fronteira que separa a alternativa correta das demais.
Polimorfismo
1Sobrecarga (overloading)
Mesma classe
Parâmetros diferentes
Resolução em compilação
2Sobrescrita (override)
Superclasse e subclasse
Mesma assinatura
Resolução em execução
LEVEL · soulevel.com.br
Alternativa A — ✅ Correta ⟵ GABARITO
Esta é a definição correta de polimorfismo. A alternativa afirma que "associa-se o mesmo nome para mais de um método, normalmente contendo códigos distintos entre si" — exatamente o que ocorre tanto na sobrecarga (mesmo nome, parâmetros diferentes, códigos diferentes na mesma classe) quanto na sobrescrita (mesmo nome e parâmetros, código diferente na subclasse). O termo "normalmente" é adequado, pois os códigos são distintos justamente para implementar comportamentos diferentes sob a mesma interface.
Alternativa B — ❌ Incorreta
Afirma que "o número de atributos e de métodos deve ser o mesmo em todas as classes do programa". Isso é falso: não existe nenhuma regra na orientação a objetos que exija uniformidade na quantidade de membros entre classes. Cada classe define seus próprios atributos e métodos conforme sua responsabilidade. Essa alternativa confunde polimorfismo com uma suposta padronização estrutural que não existe.
Alternativa C — ❌ Incorreta
Afirma que "deve haver um único nome para todos atributos e métodos contidos no programa". Isso contraria diretamente o polimorfismo, que permite (e até incentiva) que métodos diferentes compartilhem o mesmo nome. Além disso, na prática, é comum e aceitável que atributos e métodos de classes diferentes tenham nomes iguais — o que os distingue é a classe à qual pertencem. A alternativa inverte o conceito.
Alternativa D — ❌ Incorreta
Afirma que "cada classe somente pode comportar um único método". Isso é absurdo: uma classe pode (e normalmente deve) ter vários métodos, cada um com uma responsabilidade específica. O polimorfismo, inclusive, frequentemente envolve uma classe com múltiplos métodos, alguns deles sobrecarregados. Não há limite de um método por classe em nenhuma linguagem orientada a objetos.
Alternativa E — ❌ Incorreta
Afirma que "os métodos com o mesmo nome devem ser compilados em compiladores distintos entre si". Isso não faz sentido: métodos com o mesmo nome (sobrecarga ou sobrescrita) são compilados pelo mesmo compilador, normalmente no mesmo arquivo ou projeto. A alternativa mistura conceitos de compilação com polimorfismo de forma totalmente equivocada.
NÃO CAIA NESSA!
A banca explora a confusão entre polimorfismo e outros pilares da POO. As alternativas B, C e D distorcem o conceito ao impor regras rígidas e falsas (mesmo número de membros, nome único, um método por classe), enquanto a E introduz uma ideia absurda sobre compiladores. O candidato que decora a definição sem entender o mecanismo cai facilmente. Lembre-se: polimorfismo é sobre flexibilidade de comportamento, não sobre restrições estruturais. Com treino, você reconhece essas distorções de longe 💪
PEGA ESSA DICA!
Para fixar, compare os dois tipos de polimorfismo:
Critério
Sobrecarga (overloading)
Sobrescrita (override)
Onde ocorre
Na mesma classe
Entre superclasse e subclasse
Assinatura
Nomes iguais, parâmetros diferentes
Nome e parâmetros idênticos
Resolução
Em tempo de compilação (estático)
Em tempo de execução (dinâmico)
Palavra-chave
—
@Override (em Java)
Na prova, ao ver "mesmo nome, códigos distintos", marque polimorfismo sem hesitar.