C# Какая разница между абстрактными классами и интерфейсами?

какая разница между абстрактным классом и интерфейсом, ведь и тот и тот требует от своих дочерних классов реализации абстрактных/объявленных членов.

  • Абстрактный класс может содержать в себе реализацию методов, интерфейс не может (при наследовании от абстрактного класса происходит как наследование реализации так и наследование абстракции)
  • Абстрактный метод является неявным виртуальным методом, его реализация предоставляется методом переопределения override, который является членом не абстрактного (конкретного) класса - для реализации метода объявленного в интерфейсе нужно только создать метод с идентичной сигнатурой, модификатором доступа, типом возвращаемого значения.
  • класс может реализовать (наследоваться) несколько интерфейсов, но только 1 класс (абстрактный или же конкретный)
  • члены интерфейсов автоматически являются открытыми, абстрактными, и они не
    могут иметь модификаторов доступа в отличии от абстрактных членов
  • интерфейсы не могут содержать константы, поля, операторы, конструкторы
    экземпляров, деструкторы или вложенные типы (интерфейсы в том числе)

Спасибо!!! Стало намного понятнее)