Конфликт переопределений
Конфликт переопределений
Пока в ходе наследования мы меняли лишь имена. А что, если промежуточный предок, такой, как B или C (см. последний рисунок), переопределит дублируемо наследуемый компонент? При динамическом связывании это может привести к неоднозначности в D.
Проблему решают два простых механизма: отмена определения (undefinition) и выделение (selection). Как обычно, вы сами примете участие в их разработке и убедитесь в том, что при четкой постановке задачи нужная конструкция языка становится совершенно очевидной.
Пусть дублируемо наследуемый компонент переопределяется в одной из ветвей:
Рис. 15.21. Переопределение - причина потенциальной неоднозначности
Класс B переопределяет f. Поэтому в D этот компонент представлен в двух вариантах: результат переопределения в B и исходный вариант из A, полученный через класс C. (Можно предполагать, что и C переопределяет f, но это не внесет в наше рассуждение ничего нового.) Такое положение дел отличается от предыдущих случаев, в которых мы имели лишь один вариант компонента, возможно, наследуемый под разными именами.
Что произойдет в результате? Ответ зависит от того, под одним или разными именами класс D наследует варианты компонентов. Подразумевает ли дублируемое наследование репликацию или совместное использование? Рассмотрим эти случаи по порядку.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Конфликт при захвате блокировки и масштабируемость
Конфликт при захвате блокировки и масштабируемость Термин "конфликт при захвате блокировки" (lock contention, или просто contention) используется для описания блокировки, которая в данный момент захвачена и на освобождение которой ожидают другие потоки. Блокировки с высоким уровнем
Идеологический конфликт
Идеологический конфликт Уильям Ходкинсон имел свои твердые представления об идеальном устройстве киноиндустрии{153}. Читатели помнят, что он был в своем кругу белой вороной: уроженец штата Юта, единственный среди лидеров бунта не еврей-иммигрант. Начав свой путь в
WordPress и Thesis: лицензионный конфликт Крестников Евгений
WordPress и Thesis: лицензионный конфликт Крестников Евгений Опубликовано 27 июля 2010 года Конфликты по поводу нарушения GPL между разработчиками свободных и проприетарных программ — дело обычное. Лицензия не мешает зарабатывать деньги (в качестве примера
Кивино гнездо: Конфликт криптографии и бюрократии Берд Киви
Кивино гнездо: Конфликт криптографии и бюрократии Берд Киви Опубликовано 09 июля 2010 года Новая структура в составе вооруженных сил США, получившая название «киберкомандование» и базирующаяся в штаб-квартире Агентства национальной безопасности в
Конфликт имен
Конфликт имен Каждый класс обладает доступом ко всем компонентам своих родителей. Он может использовать их, не указывая тот класс, в котором они были описаны. После обработки inherit в классе class C inherit A ... метод f класса C становится известен как f. То же справедливо и для
Зачем нужна фотокамера: конфликт реальности и магии на мегапиксельном поле боя Василий Щепетнёв
Зачем нужна фотокамера: конфликт реальности и магии на мегапиксельном поле боя Василий Щепетнёв Опубликовано 12 июля 2013 Редкий человек обходится сегодня без фотокамеры.Обыкновенно первый фотик дарят на день рождения, реже — на свадьбу или
Многосторонний конфликт: особи, гены и мемы; индивиды и группы; ближние цели и отдалённые перспективы Дмитрий Шабанов
Многосторонний конфликт: особи, гены и мемы; индивиды и группы; ближние цели и отдалённые перспективы Дмитрий Шабанов Опубликовано 11 апреля 2013 В прошлой колонке мы говорили о нескольких механизмах эволюции и способах наследования, которые их