Não possui instâncias diretas, mas apenas classes descendentes:
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa correta é a C - a classe abstrata.
Em Engenharia de Software, especialmente na programação orientada a objetos, uma classe abstrata é uma classe que não pode ser instanciada diretamente. Ou seja, você não pode criar um objeto de uma classe abstrata usando um construtor comum como faria com outras classes. Classes abstratas são projetadas para serem subclasses, onde suas classes derivadas fornecem implementações para os métodos abstratos declarados na classe abstrata.
As classes abstratas são úteis quando você tem uma base conceitual que compartilha uma estrutura comum ou comportamento, mas onde não faz sentido ter objetos dessa classe abstrata. Por exemplo, você pode ter uma classe abstrata chamada Animal, que possui métodos como comer e mover, mas nunca instanciaria um objeto 'Animal' porque é muito genérico. Em vez disso, você criaria classes concretas como Cão ou Gato, que herdam de Animal e implementam os métodos específicos de sua espécie.
Por que a alternativa C está correta? Porque ela exatamente descreve o papel de uma classe abstrata dentro da orientação a objetos: uma entidade que serve como um modelo ou protótipo para outras classes, mas não é destinada a ser usada para criar instâncias diretamente.
As outras alternativas não se encaixam na definição correta:
- A classe concreta é uma classe que pode ser instanciada para criar objetos.
- O objeto é uma instância de uma classe, seja ela concreta ou abstrata (através de uma subclasse concreta).
- O caso de uso de inclusão é um conceito de modelagem de sistemas usado em UML, que não tem relação direta com a instanciação de classes.
- O pacote é um mecanismo para organizar classes e interfaces em grupos lógicos, mas também não está relacionado à capacidade de instanciar classes.
Essa compreensão sobre classes abstratas é fundamental para o entendimento de hierarquias de classes e polimorfismo na orientação a objetos, conceitos esses frequentemente abordados em concursos públicos que envolvem conhecimentos de Engenharia de Software.
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
A classe que estender uma classe abstrata não precisa implementar os métodos herdados, desde de que essa subclasse também não seja concreta.
Podemos dizer que a primeira classe concreta que herdar de uma classe abstrata é que deve implementar todos os métodos abstratos.
Classes abstratas não são obrigadas a ter métodos abstratos, ou seja, ter todos os seus metodos com corpo. Mas, caso contenha ao menos um método abstrato, ela também deve, obrigatoriamente, ser declarada como abstrata.
An abstract class allows you to create functionality that subclasses can implement or override. An interface only allows you to define functionality, not implement it. And whereas a class can extend only one abstract class, it can take advantage of multiple interfaces.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo