Pular para o conteúdo principal

Questão de Programação — Plataforma Java — FUNDATEC 2026

ProgramaçãoPlataforma Java
Código
qg685318
Banca
FUNDATEC
Órgão
IFC-SC
Ano
2026
Nível
Superior
Cargo
Professor EBTT - Informática: Programação Básica e Programação Web
Qual é a principal diferença conceitual entre uma interface e uma classe abstrata em Java, considerando suas capacidades e seus propósitos de design?
  1. AInterfaces podem ter construtores, enquanto classes abstratas não.
  2. BClasses abstratas podem implementar múltiplas interfaces, mas interfaces não podem estender múltiplas classes abstratas.
  3. CInterfaces definem um contrato de comportamento sem implementação de estado, enquanto classes abstratas podem ter estado (atributos) e implementações parciais.
  4. DInterfaces podem ter métodos estáticos e privados, mas classes abstratas não.
  5. ENão há diferença significativa, são apenas formas diferentes de alcançar o polimorfismo.
Revelar gabarito e comentário

GabaritoC — Interfaces definem um contrato de comportamento sem implementação de estado, enquanto classes abstratas podem ter estado (atributos) e implementações parciais.

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

Diferença entre Interface e Classe Abstrata em Java

Gabarito: letra C. A principal diferença conceitual é que interfaces definem um contrato de comportamento sem implementação de estado (não possuem atributos de instância), enquanto classes abstratas podem ter estado (atributos) e fornecer implementações parciais de métodos. Essa distinção reflete o propósito de design: interfaces para estabelecer contratos que qualquer classe pode assumir; classes abstratas para compartilhar código e estado entre classes relacionadas.

Critério

Interface

Classe Abstrata

Estado (atributos de instância)

Não possui (apenas constantes public static final)

Pode ter atributos de instância

Implementação de métodos

Apenas métodos abstratos (até Java 7); a partir do Java 8, pode ter métodos default e static

Pode ter métodos abstratos e concretos (implementação parcial)

Construtores

Não pode ter construtores

Pode ter construtores

Herança múltipla

Pode estender múltiplas interfaces

Pode estender apenas uma classe (abstrata ou concreta), mas implementar múltiplas interfaces

Propósito de design

Definir um contrato de comportamento (o que a classe deve fazer)

Compartilhar código e estado entre classes relacionadas (herança)

Alternativa A — ❌ Incorreta

Afirma que interfaces podem ter construtores, e classes abstratas não. Errado: em Java, interfaces não podem ter construtores, enquanto classes abstratas podem (e geralmente têm) construtores para inicializar atributos. A alternativa inverte a regra.

Alternativa B — ❌ Incorreta

Diz que classes abstratas podem implementar múltiplas interfaces, mas interfaces não podem estender múltiplas classes abstratas. A primeira parte é verdadeira, mas a segunda é um erro conceitual: interfaces não estendem classes (nem abstratas nem concretas); elas estendem outras interfaces (herança múltipla de interface). Além disso, a comparação não reflete a diferença principal.

Alternativa C — ✅ Correta ⟵ GABARITO

Declara corretamente que interfaces definem um contrato sem estado (atributos são apenas constantes public static final), enquanto classes abstratas podem ter atributos de instância e métodos concretos, oferecendo implementações parciais. Essa é a essência da distinção no Java.

Alternativa D — ❌ Incorreta

Afirma que interfaces podem ter métodos estáticos e privados, mas classes abstratas não. Errado: a partir do Java 8 e 9, interfaces podem ter métodos estáticos e privados (e privados estáticos). Porém, classes abstratas também podem ter métodos estáticos e privados (inclusive desde sempre). Portanto, não há diferença nesse aspecto; a alternativa é falsa.

Alternativa E — ❌ Incorreta

Diz que não há diferença significativa. Absolutamente errado: a diferença é fundamental na orientação a objetos em Java, tanto em termos de capacidade (estado vs. contrato) quanto de propósito (herança de implementação vs. herança de tipo).

NÃO CAIA NESSA!

Memorize a tabela comparativa: Interfaces: sem estado (apenas constantes), métodos abstratos (e default/static/private), herança múltipla de interface. Classes abstratas: podem ter estado, métodos concretos e abstratos, herança única de classe. A banca adora trocar essas características, como fez nas alternativas A e D.

Gabarito: letra C.

Link permanente: /questoes/qg685318