Se uma classe abstrata declara uma interface, essa classe ti...
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é E - errado. Vamos entender o porquê.
Na programação orientada a objetos, uma classe abstrata é uma classe que não pode ser instanciada por si só, significando que você não pode criar um objeto diretamente desta classe. Ela é projetada para ser uma classe base de outras classes. Uma classe abstrata pode conter métodos abstratos e métodos concretos (com corpo). Os métodos abstratos declaram a assinatura sem fornecer uma implementação.
Importante mencionar que, quando uma classe herda de uma classe abstrata, ela deve implementar todos os métodos abstratos que não foram implementados anteriormente, ou então essa classe também deve ser declarada como abstrata.
Na UML, uma classe abstrata pode ser, de fato, identificada pelo nome em itálico. No entanto, a afirmação de que a "interface não pode ser implementada por classes que herdem da classe abstrata" está incorreta. A ideia por trás de uma interface é justamente ser um contrato que outras classes podem implementar, definindo um conjunto de métodos que devem ser fornecidos por qualquer classe concreta que se comprometa com essa interface. Classes abstratas podem muito bem declarar e implementar interfaces.
Além disso, em UML, relacionamentos de dependência são geralmente representados por uma seta tracejada com uma ponta aberta, mas isso não é específico para a relação entre clientes e uma classe abstrata - é um conceito mais genérico que pode representar qualquer tipo de dependência.
Com base nesses esclarecimentos, podemos perceber que a alternativa está errada porque mistura conceitos de classes abstratas e interfaces, e apresenta uma restrição inexistente sobre a implementação de interfaces por classes derivadas de uma classe abstrata.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
por causa disso:
"a interface não pode ser implementada por classes que herdem da classe abstrata."
Não se se aplica à UML tbm, mas essa afirmação em java estaria errada : "essa classe tipicamente contém declarações de métodos, mas não corpos de métodos;
pois em uma classe abstrata pode ter métodos abstratos e métodos concretos
já a classe abstrata pode ou não implementar (codificar) todos os métodos realizados da interface.
e-
Classe Abstrata
- Seus métodos podem ter suas próprias implementações padrão, podem ser estendidos e podem funcionar, independente da classe herdeira (subclasse).
- Seus métodos podem ser implementados se declarados abstratos.
- Pode implementar mais de uma interface, mas pode herdar apenas uma classe.
In Java, an abstract class can implement an interface, and not provide implementations of all of the interface’s methods.
https://hackerbits.com/programming/why-does-an-abstract-class-need-to-implement-interface-methods/
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo