Определение и реализация интерфейса


Интерфейс определяет набор методов, которые должны быть реализованы классом, наследующим этот интерфейс. Сам интерфейс не реализует методы.

Интерфейсы объявляются с помощью ключевого слова interface. Вот как выглядит упрощенная форма объявления интерфейса:

Interface имя

{

тип_возврата имя_метода_1 (список_параметров);

тип_возврата имя_метода_2 (список_параметров);

. . . . . . . .

тип_возврата имя_метода_N (список_параметров);

}

Интерфейсы синтаксически подобны абстрактным классам.

Однако в интерфейсе ни один метод не может включать тело, т.е. интерфейс, в принципе, не предусматривает какой бы то ни было реализации.

Он определяет, что должно быть сделано, но не уточняет, как.

Какой-либо интерфейс может унаследовать и реализовать любое количество классов. И каждый по-своему. При этом один класс может реализовать любое число разных интерфейсов.

Для реализации интерфейса класс должен обеспечить тела (реализацию) методов, описанных в интерфейсе. Каждый класс может определить собственную реализацию. Таким образом, два класса могут реализовать один и тот же интерфейс различными способами, но все классы поддерживают одинаковый набор методов.

Поскольку интерфейс для всех объектов одинаков, это позволяет программе, “осведомленной” о наличии интерфейса, использовать объекты любого класса.

Рассмотрим пример интерфейса для класса, который генерирует ряд чисел.

Public interface ISeries

{

Int getNext (); // Возвращает следующее число ряда.

Void reset (); // Выполняет перезапуск.

Void setStart (int x); // Устанавливает начальное значение.

}

Этот интерфейс имеет имя ISeries. Хотя префикс "I" необязателен, многие программисты его используют, чтобы отличать интерфейсы от классов. Интерфейс ISeries объявлен открытым, поэтому он может быть реализован любым классом в любой программе.

Помимо сигнатур методов интерфейсы могут объявлять сигнатуры свойств, индексаторов и событий.

Так как в интерфейсе методы не содержат реализации, то:

• нельзя создать экземпляр интерфейса;

• интерфейсы не могут иметь полей, так как это подразумевает некоторую внутреннюю реализацию;

• они не могут определять конструкторы, деструкторы или операторные методы;

• кроме того, ни один член интерфейса не может быть объявлен статическим;

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

Реализация интерфейсов

Формат записи класса, который реализует интерфейс:



Дата добавления: 2019-02-08; просмотров: 674;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.01 сек.