Questão de Programação — Programação Orientada a Objetos — FUNDATEC 2026
Programação›Programação Orientada a Objetos
Código
qg685497
Banca
FUNDATEC
Órgão
IFC-SC
Ano
2026
Nível
Superior
Cargo
Professor EBTT - Computação
Em linguagens orientadas a objetos com suporte a despacho dinâmico, o polimorfismo pode se manifestar como sobrecarga (overloading) ou sobrescrita (overriding), mecanismos com semânticas e momentos de resolução distintos. Nesse sentido, assinale a alternativa correta.
AA sobrescrita (overriding) é resolvida em tempo de compilação: o compilador determina qual implementação invocar com base no tipo estático (declarado) da variável, não no tipo real do objeto em tempo de execução.
BA sobrescrita (overriding) exige que a subclasse forneça nova implementação para um método da superclasse com a mesma assinatura; quando o método participa de despacho dinâmico — como métodos virtuais em C++ ou métodos de instância sobrescrevíveis em Java —, a chamada via referência para a classe base é resolvida em tempo de execução com base no tipo real do objeto.
CA sobrecarga (overloading) permite que uma subclasse redefina um método herdado da superclasse; a versão a ser invocada é determinada dinamicamente pelo tipo real do objeto receptor em tempo de execução.
DA ligação dinâmica (dynamic binding) é o mecanismo de resolução da sobrecarga de métodos, pois o compilador não consegue determinar, em tempo de compilação, qual versão sobrecarregada deve ser chamada.
EEm C++, a simples redefinição de um método da classe base em uma classe derivada produz polimorfismo dinâmico, independentemente de o método da classe base ser declarado como virtual.
Revelar gabarito e comentário▾
GabaritoB — A sobrescrita (overriding) exige que a subclasse forneça nova implementação para um método da superclasse com a mesma assinatura; quando o método participa de despacho dinâmico — como métodos virtuais em C++ ou métodos de instância sobrescrevíveis em Java —, a chamada via referência para a classe base é resolvida em tempo de execução com base no tipo real do objeto.
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 (Overriding) vs Sobrecarga (Overloading)
Gabarito: letra B. A sobrescrita (overriding) é o mecanismo que permite que uma subclasse forneça nova implementação para um método herdado com a mesma assinatura; quando o método participa de despacho dinâmico (métodos virtuais em C++ ou métodos de instância sobrescrevíveis em Java), a chamada via referência para a classe base é resolvida em tempo de execução com base no tipo real do objeto. As demais alternativas confundem os conceitos de sobrecarga e sobrescrita, especialmente quanto ao momento de resolução (compilação vs execução).
Característica
Sobrescrita (Overriding)
Sobrecarga (Overloading)
Definição
Subclasse fornece nova implementação para método herdado com a mesma assinatura
Métodos com o mesmo nome, mas assinaturas diferentes (parâmetros distintos) na mesma classe
Momento de resolução
Tempo de execução (despacho dinâmico)
Tempo de compilação (ligação estática)
Mecanismo de ligação
Ligação dinâmica (dynamic binding)
Ligação estática (static binding)
Exigência para polimorfismo dinâmico (C++)
Método da classe base deve ser declarado como virtual
Não se aplica (não produz polimorfismo dinâmico)
Alternativa A — ❌ Incorreta
Afirma que a sobrescrita é resolvida em tempo de compilação, com base no tipo estático. Isso é incorreto: a sobrescrita com despacho dinâmico é resolvida em tempo de execução (dynamic binding). A descrição dada corresponde, na verdade, à sobrecarga (overloading) ou a métodos que não são virtuais.
Alternativa B — ✅ Correta ⟵ GABARITO
A alternativa descreve exatamente o que é a sobrescrita: mesma assinatura, nova implementação na subclasse. Quando o método é virtual (C++) ou sobrescrevível (Java), a chamada via referência da classe base é resolvida dinamicamente pelo tipo real do objeto em tempo de execução — é o despacho dinâmico (dynamic dispatch).
Alternativa C — ❌ Incorreta
Confunde sobrecarga com sobrescrita. A descrição apresentada (subclasse redefinir método herdado) é de sobrescrita, não de sobrecarga. A sobrecarga refere-se a métodos com o mesmo nome mas assinaturas diferentes na mesma classe, resolvida em tempo de compilação. Além disso, a determinação dinâmica mencionada é característica da sobrescrita, não da sobrecarga.
Alternativa D — ❌ Incorreta
Afirma que a ligação dinâmica (dynamic binding) é o mecanismo de resolução da sobrecarga. Isto é falso: a sobrecarga utiliza ligação estática (static binding), resolvida em tempo de compilação. A ligação dinâmica está associada à sobrescrita (polimorfismo por inclusão).
Alternativa E — ❌ Incorreta
Em C++, a simples redefinição de um método da classe base não produz polimorfismo dinâmico. Para que haja despacho dinâmico, o método da classe base deve ser declarado como virtual. Sem a palavra-chave virtual, a redefinição constitui ocultação (hiding) e a chamada é resolvida estaticamente.
NÃO CAIA NESSA!
A banca explora a confusão clássica entre sobrecarga e sobrescrita. O aluno precisa lembrar que sobrecarga (overloading) = mesmo nome, assinaturas diferentes, resolução em compilação (estática). Sobrescrita (overriding) = mesma assinatura, hierarquia de classes, resolução em execução (dinâmica) se o método for virtual/sobrescrevível. A pegadinha mais comum é inverter o momento de resolução ou atribuir o comportamento de um ao outro. Com treino em questões de OOP, esses detalhes ficam claros.