Questão de Programação — Programação Orientada a Objetos — Quadrix 2025
- Código
- qg603666
- Banca
- Quadrix
- Órgão
- SEDF
- Ano
- 2025
- Nível
- Superior
- Cargo
- Professor de Educação Básica: Informática
- CCerto
- EErrado
GabaritoE — Errado
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.
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.
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