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