Pular para o conteúdo principal

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

ProgramaçãoProgramação Orientada a Objetos
Código
qg603666
Banca
Quadrix
Órgão
SEDF
Ano
2025
Nível
Superior
Cargo
Professor de Educação Básica: Informática
Quanto aos algoritmos, à programação orientada a objetos e à arquitetura MVC, julgue o item seguinte. A herança múltipla é suportada diretamente em linguagens como Java, permitindo que uma classe herde atributos e métodos de várias classes‑base ao mesmo tempo.
  1. CCerto
  2. EErrado
Revelar gabarito e comentário

GabaritoE — Errado

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”.

Herança múltipla em Java

Gabarito: E — ERRADO. A afirmação está incorreta porque Java não suporta herança múltipla de classes — uma classe Java só pode estender uma única superclasse (herança simples). O que Java oferece é a implementação de múltiplas interfaces, que é um mecanismo diferente de herança múltipla de classes. A confusão entre esses dois conceitos é exatamente o que a banca explora nesta questão.

A herança é um dos pilares da programação orientada a objetos (POO), permitindo que uma classe (subclasse) reutilize atributos e métodos de outra (superclasse). No entanto, as linguagens de programação diferem quanto ao suporte à herança múltipla. Enquanto C++ permite que uma classe herde de várias classes-base diretamente, Java adotou uma abordagem mais restritiva: herança simples de classes + implementação de múltiplas interfaces.

A decisão de projeto do Java de não permitir herança múltipla de classes foi tomada para evitar o chamado "problema do diamante", que ocorre quando uma classe herda de duas classes que, por sua vez, herdam de uma mesma classe ancestral, gerando ambiguidade sobre qual implementação de um método deve ser usada. Em vez disso, Java permite que uma classe implemente várias interfaces, que definem contratos (métodos abstratos) sem implementação, evitando o conflito.

Na prática, quando você escreve class Carro extends Veiculo implements Dirigivel, Seguravel, o extends limita a herança a uma única classe, enquanto implements permite múltiplas interfaces. Isso é fundamentalmente diferente de herança múltipla de classes, pois as interfaces não fornecem implementação de métodos (até o Java 8, quando passaram a permitir métodos default, mas ainda sem estado).

A pegadinha desta questão está em confundir "herança múltipla" com "implementação de múltiplas interfaces". O candidato que sabe que Java permite implements Interface1, Interface2 pode erroneamente concluir que Java suporta herança múltipla. Mas a herança múltipla, no sentido estrito, refere-se a herdar de múltiplas classes, o que Java não permite.

NÃO CAIA NESSA!

A banca explora a confusão entre herança múltipla de classes (não suportada em Java) e implementação de múltiplas interfaces (suportada). O candidato que lembra que Java permite implements Interface1, Interface2 pode marcar como certo, mas o conceito de herança múltipla é específico para classes. Java usa herança simples de classes + múltiplas interfaces para evitar o problema do diamante.

Herança múltipla em Java
  • 1Não suportada (classes)
    • Herança simples (extends)
    • Problema do diamante
  • 2Suportada (interfaces)
    • implements Interface1, Interface2
    • Contrato sem implementação
LEVEL · soulevel.com.br

Alternativa E — ❌ Incorreta ⟵ GABARITO

A afirmação está errada porque Java não suporta herança múltipla de classes. Uma classe Java só pode herdar de uma única superclasse usando extends. O que Java permite é que uma classe implemente múltiplas interfaces (com implements), mas isso não configura herança múltipla no sentido clássico, pois interfaces não são classes e não fornecem implementação de métodos (até o Java 8, quando passaram a permitir métodos default, mas ainda sem estado).

A confusão entre esses dois conceitos é o erro central. Herança múltipla de classes é um recurso de linguagens como C++, que permite class C : public A, public B. Java deliberadamente não adota esse recurso para evitar o problema do diamante, optando por herança simples + múltiplas interfaces.

Gabarito: E — ERRADO

Link permanente: /questoes/qg603666