Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Чем отличается интерфейс от абстрактного класса? И поч в С++ интерфейсы только недавно появились?

имя фамилия Ученик (95), закрыт 6 месяцев назад
Лучший ответ
Андрей Высший разум (466259) 7 месяцев назад
Абстрактный класс в обязательном порядке создаёт иерархию наследования.

Интерфейс требует, чтобы класс, реализующий интерфейс, содержал реализации всех методов, определённых этим интерфейсом. Но никакого наследования при этом не создаётся: один и тот же интерфейс могут реализовывать никак не связанные между собой классы.

Длинные цепочки наследования (а, тем более, множественного наследования) приводят к написанию очень хрупкого кода: когда какая-то мелкая правка в коде класса-предка может непредсказуемым образом поломать работу классов-потомков. И интерфейсы, позволяющие реализовывать полиморфизм вообще без наследования, являются способом написания более надёжного, по сравнению с наследованием, кода.

P.S. Первое, что сделали разработчики ООП-языков на базе опыта использования С++ - урезали в новых языках наследование до предельно примитивного линейного и добавили интерфейсы.
Остальные ответы
Def Гений (64168) 7 месяцев назад
1) Тем, что абстрактный класс может содержать реализацию некоторых методов.

2) Потому что c++ основан на парадигме полиморфизма через наследование, а не на интерфейсном полиморфизме.
Похожие вопросы