Разрешение конфликтов имен

Разрешение конфликтов имен

Явная реализаций интерфейса может оказаться очень полезной тогда, когда реализуются несколько интерфейсов, содержащих идентичные члены, Предположим. например, что вы создали класс, реализующий следующие новые типы интерфейса.

// Три интерфейса, определяющие методы с одинаковыми именами.

public interface IDraw {

 void Draw();

}

public interface IDrawToPrinter {

 void Draw();

}

Если вы захотите построить класс с именем SuperImage (суперизображение), поддерживающий базовую визуализацию (IDraw), 3D-визуализацию (IDraw3D), а также сервис печати (IDrawToPrinter), то единственным способом обеспечить уникальную реализацию для каждого метода будет использование явной реализации интерфейса.

// Не выводится из Shape, но вводит конфликт имен.

public class SuperImage: IDraw, IDrawToPrinter, IDraw3D {

 void IDraw.Draw() {/* Логика базовой визуализации. */}

 void IDrawToPrinter.Draw() {/* Логика печати. */}

 void IDraw3D.Draw() {/* Логика 3D-визуализации. */}

}

Исходный код. Проект CustomInterface размешен в подкаталоге, соответствующем главе 7.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

РЫНКИ: Хроники Фемиды. ВлиЯние судебных конфликтов на состояние ИКТ-отрасли

Из книги Журнал «Компьютерра» № 47-48 от 19 декабря 2006 года автора Журнал «Компьютерра»

РЫНКИ: Хроники Фемиды. ВлиЯние судебных конфликтов на состояние ИКТ-отрасли Автор: Родион НасакинКак известно, право в России не прецедентное, так что одно вынесенное судебное решение еще не означает, что аналогичные спорные моменты не будут возникать в будущем. Однако


Разрешение конфликтов

Из книги Управление исходными текстами. Часть 1. Краткое руководство по CVS автора Рыженков Илья


Исключение конфликтов блокировок

Из книги UNIX: взаимодействие процессов автора Стивенс Уильям Ричард

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


Разрешение конфликтов шаблонов

Из книги XSLT автора Хольцнер Стивен

Разрешение конфликтов шаблонов Еще одним важным аспектом работы с шаблонами является разрешение конфликтов. Если двум шаблонам удовлетворяют один и тот же узел или набор узлов, для определения применяемого шаблона XSLT учитывает их приоритет.У каждого шаблона есть


2.4. Предотвращение конфликта имен с помощью пространств имен

Из книги C++. Сборник рецептов автора Диггинс Кристофер

2.4. Предотвращение конфликта имен с помощью пространств имен ПроблемаВ несвязанных между собой модулях обнаружены конфликтующие имена или требуется заранее избежать возможности таких конфликтов, создав логические группы кода.РешениеДля структурирования кода


Разрешение конфликтов посредством линейного зондирования

Из книги Фундаментальные алгоритмы и структуры данных в Delphi автора Бакнелл Джулиан М.

Разрешение конфликтов посредством линейного зондирования Если количество элементов, которые, скорее всего, должна содержать хеш-таблица, известно, можно выделить место для хеш-таблицы, содержащей это количество элементов и небольшое число свободных ячеек "на всякий


Разрешение конфликтов посредством связывания

Из книги C++ для начинающих автора Липпман Стенли

Разрешение конфликтов посредством связывания Если мы готовы использовать дополнительные ячейки, кроме тех, которые требуются самой хеш-таблице, можно воспользоваться другой эффективной схемой разрешения конфликтов - схемой с закрытой адресацией. Этот метод называется


Разрешение конфликтов посредством группирования

Из книги автора

Разрешение конфликтов посредством группирования Существует разновидность метода связывания для разрешения конфликтов, которая носит название группирования в блоки (bucketing). Вместо помещения связного списка в каждую ячейку, в нее помещается группа, которая по существу


10.9. Разрешение имен в определениях шаблонов А

Из книги автора

10.9. Разрешение имен в определениях шаблонов А Внутри определения шаблона смысл некоторых конструкций может различаться в зависимости от конкретизации, тогда как смысл других всегда остается неизменным. Главную роль играет наличие в конструкции формального параметра


13.9.1. Разрешение имен в области видимости класса

Из книги автора

13.9.1. Разрешение имен в области видимости класса Конечно, имена, используемые в области видимости класса, не обязаны быть именами членов класса. В процессе разрешения в этой области ведется поиск имен, объявленных и в других областях. Если имя, употребленное в области


13.10.1. Разрешение имен в области видимости вложенного класса

Из книги автора

13.10.1. Разрешение имен в области видимости вложенного класса Посмотрим, как разрешаются имена в определениях вложенного класса и его членов.Имя, встречающееся в определении вложенного класса (кроме тех, которые употребляются во встроенных функциях-членах и аргументах по


16.11. Разрешение имен в шаблонах классов A

Из книги автора

16.11. Разрешение имен в шаблонах классов A При обсуждении разрешения имен в шаблонах функций (см. раздел 10.9) мы уже говорили о том, что этот процесс выполняется в два шага. Так же разрешаются имена и в определениях шаблонов классов и их членов. Каждый шаг относится к разным