Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > реализация парадигмы ООП


Автор: Gunslinger 25.12.2007, 16:08
Про наследование говорю. Цель понятна, но в с++ наследование, оказалось, бывает разное: множественное, виртуальное, интерфейсов, реализации... может и еще какое есть. В голове каша. Помогите структурировать: 
вид наследования 
причины появления
простенький пример (хотя бы на словах).

Заранее спасибоsmile

Автор: Earnest 25.12.2007, 16:39
Ты еще забыл наследование "обычное" smile  (шучу).
А еще наследование бывает открытое, закрытое и защищенное, это тебе для полноты каши.

Наследование интерфейсов и наследование реализации - вещи действительно концептуальные (смысл следует из названия).

Наследование множественное и виртуальное - сугубо технические аспекты, так сказать, детали реализации. Ну, удобно иногда бывает.
Закрытое, защищенное, открытое - тоже детали реализации и способ инкапсюляции.
С точки зрения языка - все пишется (и реализуется) примерно одинаково (кроме виртуального, там надо слово virtual добавлять  smile ).

Наследование интерфейса - это в чистом виде "is a" - т.е. производный класс может подставляться вместо базового.
При реализации обычно используется открытое наследование (т.е. public).

Наследование реализации - это просто заимствование кода (не в смысле копи-паст, а использование уже написанного). Реализуется по разному - как закрытое\защищенное наследование, как embedded-объекты с делегированием вызовов и т.д.

Ты бы поконкретнее спросил, очень уж обширная тема.



Автор: Alek86 25.12.2007, 17:04
Gunslinger, лучше сначала тебе обычное наследование осилить. Зачем оно нужно, чем от включения отличается...
про остальные пока забудь
имхо, так легче

Автор: Earnest 25.12.2007, 17:27
Во, и Alek86 про "обычное" напомнил smile  smile  

Кстати, Gunslinger, когда говорят о наследовании в контексте ООП, то имеют в виду прежде всего наследование интерфейса.
Все остальное - внутренние кишки C++. Это как "класс" в C++ и "класс окна" в Виндоус: слово одно, а вещи означает совсем разные.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)