Особенности, плюсы и минусы наследования интерфейсов и классов.

Объясните пожалуйста, чем наследование интерфейсов лучше/хуже чем наследование от классов? В каких случаях лучше всего применять одно, а в каких - другое?

От классов наследуются, интерфейсы - реализовывают.

Нельзя однозначно сказать что лучше наследовать интерфейс или класс, т.к. одно другому не мешает и эти 2 наследования применяются в разных ситуациях.

Разница в наследовании классов и реализации интерфейсов заключается в следующем:

1. Классом можно наследовать другой класс ТОЛЬКО 1 раз, разные интерфейсы мы можем реализовывать неограниченное количество раз.

2. В базовом классе можно написать тела для методов, в интерфейсах ЛЮБАЯ реализация СТРОГО запрещена.

3. Если мы решаемся реализовать интерфейс мы ОБЯЗАНЫ реализовать ВСЕ методы, находящиеся внутри. Класс же можно реализовать только частично (в этом нет смысла, конечно, но если необходимо, это возможно).

Подробнее об наследовании, абстрактных классов и интерфейсов, можно узнать на видеокурсе C# Essential.