Главная->Інформатика та програмування->Содержание->Выбор спецификатора доступа

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 9) онлайн

Выбор спецификатора доступа

Как же решить вопрос о том, какой из спецификаторов использовать при на- следовании? В большинстве случаев производный класс представляет собой улучшенную или более специализированную версию базового класса. Мы рас-

смотрели примеры таких производных классов (вспомните класс CountDn, добав- ляющий новую операцию к классу Counter, или класс manager, являющийся спе- циализированной версией класса employee). В случае, когда объект производного класса предоставляет доступ как к общим методам базового класса, так и к более специализированным методам своего класса, имеет смысл воспользоваться об- щим наследованием.

class A

Рис. 9.7. Частное и общее наследование

Однако в некоторых ситуациях производный класс создается для полной мо- дификации действий базового класса, скрывая или изменяя первоначальный его вид. Например, представим, что мы создали отличный класс Array, представля- ющий собой массив, который обеспечивает защиту против обращения к элемен- там, лежащим за пределами массива. Затем предположим, что мы хотим исполь- зовать класс Array как базовый для класса Stack вместо использования обычного массива. Создавая производный класс Stack, мы не хотим, чтобы с его объектами можно было работать как с массивами, например использовать операцию [ ] для доступа к элементам данных. Работа с объектами класса Stack должна быть орга- низована как со стеками, с использованием методов push() и pop(). Тогда мы маскируем класс Array под класс Stack. В этой ситуации частное наследование позволит нам скрыть все методы класса Array от доступа через объекты произ- водного класса Stack.

 

27