Questão de Programação — Programação Orientada a Objetos — FUNDATEC 2025
Programação›Programaçã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?
AAgregação/dependência
BAbstração/encapsulamento
CAbstração/interface
DPolimorfismo/sobrecarga
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).