Вот на лекции задали такой вопрос.
Реализацию(тоесть закрытое наследование) можно свести(переделать) к иерархии объектов.
А вот с открытым так сделать нельзяЖ)
Так вот почем???
thnx anyway
17.05.03 09:13: Перенесено модератором из 'C/C++' в Проектирование. — ХД
Здравствуйте, DVV, Вы писали:
DVV>Вот на лекции задали такой вопрос.
DVV>Реализацию(тоесть закрытое наследование) можно свести(переделать) к иерархии объектов.
DVV>А вот с открытым так сделать нельзяЖ)
DVV>Так вот почем???
Хм, по определению

(Как можно доказать что-нибудь? Одним из трех способов: по определению, от противного и конструктивно.)
Так вот: если класс A открыто наследует класс AParent, то это означает, что любой A _является_ и ParentA (это свойство является одним из основных в ООП). При закрытом наследовании же, A с точки зрения сторонних наблюдателей _не является_ ParentA (так как нельзя вызывать методы/использовать переменные ParentA из-за защиты доступа). А если мы хотим от A функциональности, смахивающей на ParentA, мы можем переопределить интерфейс (возможно, с изменениями — паттерны Adapter/Decorator/Bridge) и завести внутри у себя объект ParentA, которому и перенаправлять все запросы...