Pular para o conteúdo principal

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 SistemasConceitos 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:
  1. Aassocia-se o mesmo nome para mais de um método, normalmente contendo códigos distintos entre si.
  2. Bo número de atributos e de métodos deve ser o mesmo em todas as classes do programa.
  3. Cdeve haver um único nome para todos atributos e métodos contidos no programa.
  4. Dcada classe somente pode comportar um único método.
  5. 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.

Gabarito: letra A

Link permanente: /questoes/vu196827