русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Интерфейсы


Дата добавления: 2013-12-23; просмотров: 597; Нарушение авторских прав


Тема 3

В этом разделе рассматриваются интерфейсы за счет представления полного определения одного из интерфейсов, определенного Microsoft — System. IDisposable. Интерфейс IDisposable содержит один метод Dispose (), предназначенный для реализации классами, которые выполняют очистку кода:

public interface IDisposable

{void Dispose ( ); }

Этот фрагмент показывает, что объявление интерфейса синтаксически очень похоже на объявление абстрактного класса/ Однако вы должны знать, что не допускается указывать никакой реализации ни для одного из членов интерфейса. Вообще говоря, интерфейс может содержать только объявления методов, свойств, индексов и событий.

Вы никогда не создадите экземпляр интерфейса; он содержит только сигнатуры своих членов. Интерфейс не имеет никаких конструкторов, равно как и никаких полей (поскольку это подразумевает некоторую внутреннюю реализацию). Определению интерфейса также не разрешено содержать перегрузки операций, причем не потому, что с этим связаны какие-то принципиальные проблемы — их нет, а потому, что назначение интерфейсов состоит в том, чтобы быть общедоступными контрактами, для которых перегрузка операций вызывала бы определенные проблемы совместимости с другими языками .NET, такими как Visual Basic и .NET, которые не поддерживают перегрузку операций.

Также не допускается указывать модификаторы при определении членов интерфейса. Члены интерфейса всегда неявно являются publicи не могут быть virtual или static. Это оставлено для реализации классам. Поэтому это нормально — указывать модификаторы доступа к членам интерфейса в реализующих их классах, что и делается в примерах настоящего раздела.

Возьмем, например, IDisposable. Если класс пожелает объявить, что он реализует метод Dispose(), то он должен будет реализовать интерфейс IDisposable, что в терминах С# означает, что он наследуется от IDisposable.



class SomeClass: IDisposable

{

// Этот класс ДОЛЖЕН содержать реализацию метода

// IDisposable.Dispose(), иначе вы получите ошибку компиляции

public void Dispose()

{ // реализация метода Dispose()

}

// остальная часть класса

}

В этом примере если SomeClass будет наследовать IDisposable, но не будет содержать реализации Dispose(), в точности совпадающей с сигнатурой, определенной в IDisposable, будет выдана ошибка компиляции, поскольку в этом случае класс нарушит контракт реализации интерфейса IDisposable. Конечно, для компилятора не будет никакой проблемы, если встретится класс, включающий метод Dispose(), но не унаследованный от IDisposable. Проблема будет в том, что другой код не будет иметь возможности распознать, что SomeClass согласен поддерживать средства IDisposable.

IDisposable - сравнительно простой интерфейс, потому что определяет только один метод. Большинство интерфейсов содержат большее число методов.



<== предыдущая лекция | следующая лекция ==>
Лекция 3 - Функции, цели, требования к рекламе | Определение и реализация интерфейсов


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.003 сек.