Uma classe abstrata A contém o método abstrato foo(), que nã...

Próximas questões
Com base no mesmo assunto
Q873501 Engenharia de Software
Uma classe abstrata A contém o método abstrato foo(), que não foi reimplementado pela classe B que herda de A. Nesse contexto,
Alternativas

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