Книга: Основы объектно-ориентированного программирования
Выделение всех компонентов
Выделение всех компонентов
Любой конфликт переопределений должен быть разрешен посредством select. Если, объединяя два класса, вы натолкнулись на ряд конфликтов, возможно, вы захотите, чтобы один из классов "одержал верх" (почти) в каждом из них. В частности, так происходит в ситуации, метафорично названной "брак по расчету" (вспомните, ARRAYED_STACK - потомок STACK и ARRAY), в которой классы-родители имеют общего предка. (В библиотеках Base оба класса действительно являются удаленными (distant) потомками общего класса CONTAINER.) В этом случае один из родителей (STACK) служит источником спецификаций, и вам, быть может, захочется, чтобы (почти) все конфликты были разрешены именно в его пользу.
Решение задачи упрощает следующая запись, дающая возможность не перечислять все конфликтующие компоненты. Предложение inherit класса может содержать такое описание (не более одного) родителя:
SOME_PARENT
select all end
Результат очевиден: все конфликты переопределений, - точнее те из них, что останутся после обработки других select, - разрешатся в пользу SOME_PARENT. Последнее уточнение означает, что вы по-прежнему вправе отдать предпочтение другим родителям в отношении некоторых компонентов.
- Общие предки
- По обе стороны океана
- Совместное использование и репликация
- Ненавязчивое дублирующее наследование
- Правило переименования
- Конфликт переопределений
- Конфликт при совместном использовании: отмена определения и соединение компонентов
- Конфликты при репликации: выделение
- Выделение всех компонентов
- Сохранение исходной версии при переопределении
- Пример повышенной сложности
- Дублируемое наследование и универсальность
- Правила об именах
- Выделение компонентов
- 3.2.1.2. Начальное выделение памяти: malloc()
- 2.2. Классификация банковских рисков и их компонентов
- Переименование компонентов
- На всех дисках моего компьютера есть папка System Volume Information. Для чего она нужна?
- Выделение огромных объемов памяти
- Выделение группы файлов
- Выделение ячеек
- Выделение памяти
- Листинг 8.2. Общий код, используемый во всех приведенных ниже вариантах тестов
- Конфигурация компонентов
- Один стиль для всех страниц сайта