Implementações de interface padrão. Qual é a profunda diferença significativa agora, entre classe abstrata e interface?

Eu sei que uma classe abstrata é um tipo especial de classe que não pode ser instanciado. Uma classe abstrata deve ser subclassificada (herdada de). Em outras palavras, ele apenas permite que outras classes sejam herdadas, mas não pode ser instanciado. A vantagem é que ele impõe certas hierarquias para todas as subclasses. Em palavras simples, é um tipo de contrato que força todas as subclasses a manter as mesmas hierarquias ou padrões.

Também sei que uma interface não é uma classe. É uma entidade que é definida pela palavra Interface. Uma interface não tem implementação; possui apenas a assinatura ou, em outras palavras, apenas a definição dos métodos sem o corpo. Como uma das semelhanças com a classe Abstract, é um contrato usado para definir hierarquias para todas as subclasses ou define um conjunto específico de métodos e seus argumentos. A principal diferença entre eles é que uma classe pode implementar mais de uma interface, mas só pode herdar de uma classe abstrata. Como o C # não suporta herança múltipla, as interfaces são usadas para implementar herança múltipla.

Quando criamos uma interface, basicamente criamos um conjunto de métodos sem nenhuma implementação que deve ser substituída pelas classes implementadas. A vantagem é que ela fornece uma maneira de uma classe fazer parte de duas classes: uma da hierarquia de herança e outra da interface.

Quando criamos uma classe abstrata, estamos criando uma classe base que pode ter um ou mais métodos concluídos, mas pelo menos um ou mais métodos são deixados incompletos e declarados abstratos. Se todos os métodos de uma classe abstrata são incompletos, é o mesmo que uma interface.

MAS MAS MAS

Notei que teremosMétodos de interface padrão no C # 8.0

Talvez eu esteja perguntando porque tenho apenas 1-2 anos de experiência em programação, mas qual seria a principal diferença entre classe abstrata e interface agora?

Eu sei que não podemos fazer estado na interface, será apenas uma diferença entre eles?

questionAnswers(3)

yourAnswerToTheQuestion