Sobre classes concretas e abstratas pode-se afirmar que

Próximas questões
Com base no mesmo assunto
Q4114038 Programação
Sobre classes concretas e abstratas pode-se afirmar que
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Gabarito: E

Fundamento decisivo: A decisão dependia de distinguir que classe concreta não pode ter método abstrato, enquanto classe abstrata pode deixar métodos sem implementação; além disso, programar o cliente contra supertipos abstratos reduz o acoplamento às subclasses concretas.

Tema central: abstração e concretude
Análise das alternativas
A
Errada
Errada. Classe abstrata não é completa no sentido de estar integralmente pronta para instanciação, porque pode conter métodos abstratos sem implementação.
B
Errada
Errada. Classe abstrata não precisa fornecer implementação para cada método que declara; ela pode declarar métodos abstratos sem corpo.
C
Errada
Errada. Se uma classe contém método abstrato não implementado, ela deve ser abstrata. Portanto, uma classe concreta não pode manter um ou mais métodos abstratos.
D
Errada
Errada. Construtores e métodos static não podem ser abstract, porque abstract pressupõe implementação por sobrescrita em subclasses, o que não se aplica nem a construtores nem a membros estáticos.
E
Certa
A alternativa E está correta porque expressa uma prática de projeto compatível com polimorfismo por supertipo: escrever o código cliente contra superclasses abstratas reduz o acoplamento a subclasses concretas específicas. O critério técnico é programar contra abstrações, e não contra implementações concretas, para diminuir dependências diretas do cliente.
Pegadinha da questão
A confusão explorada foi tratar classe abstrata como se fosse apenas uma classe comum parcialmente rotulada, esquecendo que ela pode deixar métodos sem implementação, e misturar isso com a falsa ideia de que static ou construtor poderiam ser abstract.
Dica para questões semelhantes
  • Se restar método abstrato sem implementação, a classe não pode ser concreta.
  • Classe abstrata pode declarar métodos sem corpo; por isso não se presume implementação completa.
  • Abstract é incompatível com construtor e com método static.
  • Quando a alternativa falar em reduzir dependência do cliente, verifique se ela aponta uso de supertipos abstratos em vez de subclasses concretas.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo