Это не еще один вопрос о разнице между абстрактными классами и интерфейсами, поэтому дважды подумайте, прежде чем голосовать за его закрытие.
Я знаю, что интерфейсы необходимы для тех языков ООП, которые не поддерживают множественное наследование, таких как C # и Java. Но как насчет тех, с множественным наследованием? Будет ли концепция интерфейса (как особой языковой функции) избыточной в языке с множественным наследованием? Я предполагаю, что «контракт» ООП между классами может быть установлен с использованием абстрактных классов.
Или, говоря более явно, интерфейсы в C # и Java просто следствие того факта, что они не поддерживают множественное наследование?