Em C #, uma classe que implementa uma interface é necessária para definir todos os membros dessa interface. No caso de uma classe abstrata, você simplesmente define esses membros com a abstract
palavra-chave:
interface IFoo
{
void Bar();
}
abstract class Foo : IFoo
{
public abstract void Bar();
}
Ou, de outra forma: você não precisa "implementá- lo " (o que seria uma limitação terrível para as classes abstratas); no entanto, em C #, você precisa informar ao compilador que está deliberadamente passando o fanfarrão para subclasses de concreto - e a linha de código acima mostra como fazer isso.
Os comentários e votos negativos queixam-se de que essa não é uma resposta à pergunta estão perdendo o objetivo. Alguém vindo ao Stack Overflow, tendo recebido esse erro do compilador, mas tendo uma classe abstrata na qual seria um erro fornecer uma implementação, fica preso sem uma boa solução - teria que escrever métodos de implementação que gerassem exceções de tempo de execução, um trabalho horrendo -around - até que tenham as informações acima. Se é bom ou ruim que o C # exija essa explicitação, está fora do escopo do Stack Overflow e não é relevante para a pergunta nem para esta resposta.