Questão de Programação — Programação Orientada a Objetos — INSTITUTO AOCP 2025
Programação›Programação Orientada a Objetos
Código
qg539442
Banca
INSTITUTO AOCP
Órgão
IF-MS
Ano
2025
Nível
Superior
Cargo
Professor EBTT - Informática/Desenvolvimento WEB
A Programação Orientada a Objetos (POO) é um paradigma que organiza o software em unidades chamadas “objetos”, instâncias de classes que combinam dados e comportamentos. A POO visa promover a modularidade, a reutilização de código e a facilidade de manutenção. Técnicas como sobrescrita (override) e sobrecarga (overload) são usadas para permitir que um método se comporte de maneira flexível, dependendo da classe ou dos parâmetros utilizados.Considerando essas técnicas, assinale a alternativa que apresenta o conceito de POO relacionado ao uso dessas práticas.
AAbstração.
BAssociação.
CEncapsulamento.
DHerança.
EPolimorfismo.
Revelar gabarito e comentário▾
GabaritoE — Polimorfismo.
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: sobrescrita e sobrecarga
Gabarito: letra E. Sobrescrita (override) e sobrecarga (overload) são as duas faces do polimorfismo: a primeira permite que uma subclasse redefina um método herdado, e a segunda permite que métodos de mesmo nome coexistam com assinaturas diferentes — ambas fazem o mesmo nome de método se comportar de maneiras distintas conforme o contexto. É exatamente essa capacidade de "muitas formas" que define o polimorfismo, um dos pilares da POO.
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: poli (muitos) + morphos (formas) — ou seja, a capacidade de um mesmo elemento assumir diferentes formas. No contexto de métodos, isso se manifesta de duas maneiras principais: a sobrescrita (override) e a sobrecarga (overload).
A sobrescrita ocorre quando uma subclasse redefine um método que já existe na superclasse, mantendo a mesma assinatura (nome, parâmetros e retorno), mas alterando a implementação. É um mecanismo ligado à herança: a subclasse "substitui" o comportamento herdado. Por exemplo, se a classe Animal tem o método emitirSom(), a classe Cachorro pode sobrescrevê-lo para latir, e a classe Gato para miar. Em tempo de execução, o Java (ou outra linguagem) decide qual versão do método chamar com base no tipo real do objeto — isso é o despacho dinâmico.
A sobrecarga, por sua vez, ocorre quando uma classe define dois ou mais métodos com o mesmo nome, mas com assinaturas diferentes (número, tipo ou ordem dos parâmetros). Não depende de herança — pode ocorrer na mesma classe. Por exemplo, um método somar(int a, int b) e outro somar(double a, double b) são sobrecargas. A escolha de qual método executar é feita em tempo de compilação, com base nos argumentos passados — por isso é chamada de polimorfismo estático (ou em tempo de compilação).
A distinção entre os dois é um clássico de prova:
Critério
Sobrescrita (override)
Sobrecarga (overload)
Onde ocorre
Entre superclasse e subclasse (herança)
Na mesma classe
Assinatura
Idêntica à do método original
Diferente (parâmetros)
Momento da decisão
Tempo de execução (dinâmico)
Tempo de compilação (estático)
Palavra-chave (Java)
@Override
Não há anotação obrigatória
A pegadinha da banca está em confundir polimorfismo com os outros pilares. Abstração é o processo de ocultar detalhes de implementação e expor apenas o essencial (via classes abstratas ou interfaces). Encapsulamento é esconder os atributos e expor métodos públicos (getters/setters). Herança é o mecanismo de reutilização de código entre classes — ela viabiliza a sobrescrita, mas não é a técnica em si. Associação é o relacionamento entre objetos (como agregação e composição). Nenhuma dessas alternativas descreve diretamente o comportamento flexível de métodos que a sobrescrita e a sobrecarga proporcionam — esse é o papel do polimorfismo.
Guarde a fronteira: se a questão fala em "método se comportar de maneira flexível dependendo da classe ou dos parâmetros", o conceito é polimorfismo. É exatamente nesse critério que as alternativas se dividem.
Polimorfismo
1Sobrescrita (override)
Entre superclasse e subclasse
Mesma assinatura
Decisão em tempo de execução
2Sobrecarga (overload)
Na mesma classe
Assinaturas diferentes
Decisão em tempo de compilação
LEVEL · soulevel.com.br
Alternativa A — ❌ Incorreta
Abstração é o pilar que consiste em modelar apenas as características essenciais de um objeto, ocultando detalhes irrelevantes. Ela é alcançada por meio de classes abstratas e interfaces, que definem o que o objeto faz, sem especificar como. Não está relacionada à flexibilidade de métodos com mesmo nome — a abstração foca na modelagem conceitual, não no comportamento polimórfico.
Alternativa B — ❌ Incorreta
Associação é o relacionamento estrutural entre objetos de classes diferentes (por exemplo, um Pedido que contém um Cliente). Ela descreve quem conhece quem, não a capacidade de um método se comportar de formas diferentes. Sobrescrita e sobrecarga não têm relação com associação.
Alternativa C — ❌ Incorreta
Encapsulamento é o mecanismo de esconder os atributos de uma classe (tornando-os private) e expor o acesso por métodos públicos (get e set). Ele protege a integridade dos dados, mas não tem relação com a flexibilidade de métodos. A banca usa esse distrator porque encapsulamento é um dos pilares mais conhecidos, mas aqui ele não se aplica.
Alternativa D — ❌ Incorreta
Herança é o mecanismo pelo qual uma classe (subclasse) reutiliza atributos e métodos de outra (superclasse). Ela é um pré-requisito para a sobrescrita (você só sobrescreve um método que herdou), mas não é a técnica em si. A questão pergunta sobre o conceito relacionado ao uso de sobrescrita e sobrecarga — e esse conceito é o polimorfismo, que engloba ambas.
Alternativa E — ✅ Correta ⟵ GABARITO
Polimorfismo é exatamente a capacidade de um método se comportar de maneiras diferentes dependendo da classe (sobrescrita) ou dos parâmetros (sobrecarga). O enunciado descreve precisamente essa flexibilidade: "permitir que um método se comporte de maneira flexível, dependendo da classe ou dos parâmetros utilizados". É a definição clássica de polimorfismo, que se manifesta de forma dinâmica (override) e estática (overload).
NÃO CAIA NESSA!
A banca troca o pilar que viabiliza a sobrescrita (herança) pelo pilar que é a sobrescrita/sobrecarga (polimorfismo). Herança é o meio; polimorfismo é o fim. Se a alternativa diz "herança", lembre-se: a sobrescrita só existe porque há herança, mas a técnica de redefinir ou sobrecarregar métodos é polimorfismo. Com treino, você enxerga essa troca de longe 💪