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