Это несколько следующий вопрос к этому question.
Предположим, что у меня есть дерево наследования следующим образом:
Car -> Ford -> Mustang -> MustangGT
Есть ли преимущество в определении интерфейсов для каждого из этих классов? Пример:
ICar -> IFord -> IMustang -> IMustangGT
Я вижу, что, возможно, другие классы (например, Chevy) хотели бы реализовать Icar или IFord и, возможно, даже IMustang, но, вероятно, не IMustangGT, потому что это так специфично. Являются ли интерфейсы лишними в этом случае?
Кроме того, я бы подумал, что любой класс, который хотел бы реализовать IFord, определенно захотел бы использовать свое одно наследование, наследуя от Ford, чтобы не дублировать код. Если это задано, в чем преимущество реализации IFord?