Uma classe abstrata A contém o método abstrato foo(), que nã...
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Gabarito: B
Explicação:
Quando estamos lidando com o conceito de classes abstratas e métodos abstratos em programação orientada a objetos, estamos adentrando em um tema central para o entendimento de herança e polimorfismo. Uma classe abstrata é uma classe que não pode ser instanciada diretamente e é destinada a ser uma classe base para outras classes. Um método abstrato definido dentro de uma classe abstrata não possui implementação na classe onde foi declarado. O propósito é que as classes derivadas forneçam a implementação específica para esses métodos.
Na situação apresentada, temos uma classe abstrata A com um método abstrato foo(). A classe B é uma subclasse de A, mas não forneceu uma implementação para o método abstrato foo(). Isso significa que a classe B também é considerada abstrata, pois herda um método abstrato sem implementá-lo.
A alternativa B afirma que a implementação do método foo() em B é obrigatória para que ela compile. Isso está correto. Se uma classe concreta (não-abstrata) herda um método abstrato, ela deve obrigatoriamente fornecer uma implementação para esse método. Caso contrário, o compilador acusará um erro, pois haveria uma tentativa de instanciar uma classe concreta que contém um método sem implementação definida, o que é incoerente no paradigma da orientação a objetos.
Então, para que a classe B possa ser instanciada, ou ela deve implementar o método abstrato foo(), ou ela própria deve ser declarada como uma classe abstrata. O fato de B herdar de A e não implementar foo() não torna possível que B possa ser usada para criar objetos sem antes resolver esse contrato de implementação abstrata.
Espero que a explicação tenha ajudado a esclarecer como as classes e métodos abstratos funcionam na orientação a objetos e a razão pela qual a alternativa B é a correta nesse contexto.
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
b-
Herdar de uma classe abstrata obriga a classe derivada a implementar todos os metodos abstratos. Se um faltar, nao ocorre compilação.
A alternativa a) também seria verdadedeira caso a classe B fosse abstrata. Nesse caso, a obrigação de implementar o método ficaria a cargo da classe concreta que estendesse B.
Gloomy Gulch.
Pode ter o corpo do método vazio é claro que perderia sentido, ou mesmo se utilizar do polimorfismo
B poderia ser abstrata também.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo