Pular para o conteúdo principal

Questão de Programação — Programação Orientada a Objetos — FUNDATEC 2025

ProgramaçãoProgramação Orientada a Objetos
Código
qg472060
Banca
FUNDATEC
Órgão
GHC-RS
Ano
2025
Nível
Médio
Cargo
Programador
Dado o seguinte código escrito em Java, qual alternativa apresenta o conceito da programação orientada a objetos em relação aos métodos nomeados como Conceicao?Imagem associada para resolução da questão
  1. AAgregação/dependência
  2. BAbstração/encapsulamento
  3. CAbstração/interface
  4. DPolimorfismo/sobrecarga
  5. EPolimorfismo/sobrescrita
Revelar gabarito e comentário

GabaritoD — Polimorfismo/sobrecarga

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: sobrecarga e sobrescrita em Java

Gabarito: letra D. Os métodos nomeados como Conceicao no código Java apresentam o mesmo nome, mas assinaturas diferentes (diferentes tipos ou quantidades de parâmetros), o que caracteriza sobrecarga (overload) — um tipo de polimorfismo estático (em tempo de compilação). A alternativa D é a correta.

A programação orientada a objetos (POO) é um paradigma que organiza o software em torno de objetos, que possuem atributos (dados) e métodos (comportamentos). Um dos quatro pilares da POO é o polimorfismo, que significa, literalmente, "muitas formas". Na prática, o polimorfismo permite que um mesmo nome de método (ou operador) se comporte de maneiras diferentes, dependendo do contexto. Existem dois tipos principais de polimorfismo em Java: o estático (ou em tempo de compilação) e o dinâmico (ou em tempo de execução).

A sobrecarga (overload) é o polimorfismo estático. Ela ocorre quando uma classe define dois ou mais métodos com o mesmo nome, mas com assinaturas diferentes — ou seja, com diferentes tipos, quantidades ou ordem de parâmetros. O compilador decide qual método chamar analisando os argumentos passados na chamada. A sobrecarga não depende de herança; ela acontece dentro da mesma classe. Por exemplo, uma classe Calculadora pode ter um método somar(int a, int b) e outro somar(double a, double b). Ao chamar somar(1, 2), o compilador escolhe o primeiro; ao chamar somar(1.5, 2.5), escolhe o segundo.

A sobrescrita (override) é o polimorfismo dinâmico. Ela ocorre quando uma subclasse redefine um método herdado da superclasse, mantendo a mesma assinatura (mesmo nome, mesmos parâmetros e mesmo tipo de retorno). A sobrescrita depende de herança e é resolvida em tempo de execução, permitindo que uma referência da superclasse chame o método da subclasse. Por exemplo, se a classe Animal tem o método fazerSom() e a classe Cachorro o sobrescreve, ao chamar fazerSom() em uma referência do tipo Animal que aponta para um objeto Cachorro, o método executado será o da classe Cachorro.

A distinção entre sobrecarga e sobrescrita é um dos pontos mais cobrados em provas de POO. A tabela abaixo resume as diferenças:

Critério

Sobrecarga (overload)

Sobrescrita (override)

Tipo de polimorfismo

Estático (tempo de compilação)

Dinâmico (tempo de execução)

Onde ocorre

Dentro da mesma classe

Entre superclasse e subclasse

Assinatura

Diferente (muda parâmetros)

Igual (mesma assinatura)

Depende de herança

Não

Sim

Palavra-chave

Nenhuma específica

@Override (opcional, mas recomendado)

No código da questão, os métodos Conceicao têm o mesmo nome, mas assinaturas diferentes — o que configura sobrecarga. A banca explora exatamente a confusão entre sobrecarga e sobrescrita, que são os dois tipos de polimorfismo. Guarde a fronteira: sobrecarga = mesmo nome, parâmetros diferentes, mesma classe; sobrescrita = mesmo nome, mesmos parâmetros, classes diferentes (herança). É nessa fronteira que as alternativas se dividem.

Polimorfismo
  • 1Sobrecarga (overload)
    • Mesmo nome
    • Assinaturas diferentes
    • Mesma classe
    • Tempo de compilação
  • 2Sobrescrita (override)
    • Mesmo nome
    • Mesma assinatura
    • Herança
    • Tempo de execução
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

Agregação e dependência são relacionamentos entre classes, não conceitos relacionados a métodos com o mesmo nome. Agregação é um tipo de associação onde uma classe contém outra (relação "tem um"), e dependência indica que uma classe usa outra. Nada disso se aplica a métodos nomeados de forma idêntica.

Alternativa B — ❌ Incorreta

Abstração e encapsulamento são pilares da POO, mas não explicam a existência de métodos com o mesmo nome. Abstração é o processo de modelar objetos do mundo real focando nas características essenciais; encapsulamento é esconder os detalhes internos e restringir o acesso direto aos atributos. A questão trata especificamente de métodos com o mesmo nome, o que é polimorfismo.

Alternativa C — ❌ Incorreta

Abstração e interface também não se relacionam com métodos de mesmo nome. Interface é um contrato que define métodos que devem ser implementados pelas classes, mas a presença de métodos com o mesmo nome em uma classe não caracteriza uma interface. A alternativa confunde o conceito de polimorfismo com abstração/interface.

Alternativa D — ✅ Correta ⟵ GABARITO

A alternativa correta. Os métodos Conceicao têm o mesmo nome, mas assinaturas diferentes (diferentes parâmetros), o que é a definição exata de sobrecarga (overload). A sobrecarga é um tipo de polimorfismo estático, pois o compilador decide qual método chamar em tempo de compilação, com base nos argumentos. Isso ocorre dentro da mesma classe, sem depender de herança.

Alternativa E — ❌ Incorreta

Sobrescrita (override) é o polimorfismo dinâmico, que ocorre quando uma subclasse redefine um método herdado com a mesma assinatura. No código, os métodos Conceicao têm assinaturas diferentes, o que descarta a sobrescrita. A alternativa troca sobrecarga por sobrescrita, uma pegadinha clássica.

NÃO CAIA NESSA!

A banca adora inverter os conceitos de sobrecarga e sobrescrita. A pegadinha aqui é que ambos são polimorfismo, mas a sobrecarga tem assinaturas diferentes (mesma classe) e a sobrescrita tem assinatura igual (herança). Se o candidato confundir os dois, marca a letra E. Com treino, você enxerga essa troca de longe 💪.

PEGA ESSA DICA!

Para diferenciar na prova, olhe a assinatura dos métodos: se os parâmetros são diferentes, é sobrecarga; se são iguais e há herança, é sobrescrita. Outra dica: sobrecarga é resolvida em tempo de compilação (estático), sobrescrita em tempo de execução (dinâmico).

Gabarito: letra D

Link permanente: /questoes/qg472060