Классы не могут наследоваться от интерфейса, поскольку интерфейс по определению пуст: он только предписывает обязательную реализацию определенных членов.
Из MSDN об интерфейсах :
"Интерфейс содержит определения для группы связанных функций, которые может реализовать класс или структура."
Например:
interface IWritable {
void Write();
}
Код вышетолько устанавливает необходимость иметь метод Write()
во всех классах, которые его реализуют.
Теперь часть tricky .Вы можете думать об интерфейсе как о чистом абстрактном классе, то есть он определяет только методы без реализации.В других языках программирования, таких как C ++ (который, кстати, поддерживает множественное наследование, следовательно, не нужно «никакого различия»), эти классы наследуются.Более того, вы можете определить реализации по умолчанию для этих методов или даже константы.Фактически, это будет разрешено и в C #.
Так что разделительная линия «реализует» и «расширяет» или «наследует» становится размытой, когда мы больше думаем о том, как она реализована, и о функциональных возможностях, которыеэто обеспечит в будущем.
С точки зрения дизайна, это, безусловно, реализация.
Дальнейшее чтение в MSDN: ссылка на интерфейсы .