Я бы объяснил это с помощью использования.Абстрактный класс может использоваться, когда существует только одна иерархия, дополнительно без реализации по умолчанию;в то время как интерфейс может использоваться в иерархиях (горизонтально), часто называемых поведением.
Интерфейс также является абстракцией и в c # заменяет множественное наследование классов, так что это может сбивать с толку, но вы должны различать, когдаиспользуйте что.
Надеюсь, это поможет, Роберт