Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
L10.doc
Скачиваний:
15
Добавлен:
06.09.2019
Размер:
66 Кб
Скачать
☆

Void GoForward (int Speed);

}

public class Truck: IDrivable

{

public void GoForward (int Speed)

{

// Реализация опущена

}

}

Реализованные таким способом члены интерфейса доступны как интерфейсу, так и самому реализующему классу:

Truck track = new Truck ();

track.GoForward (120); // Это работает

(track as IDrivable).GoForward (120); // И это работает

Допускается явная реализация интерфейса в классе. Реализованные явно члены доступны только после преобразования объекта в тип интерфейса. Чтобы реализовать член интерфейса явно, следует объявить в классе одноименный член, указав при нем полное имя интерфейса. Например:

public class Truck: IDrivable

{

Void iDrivable.GoForward (int Speed)

{

// Реализация опущена

}

}

……………………………………………………………

track.GoForward (120); // Это не работает

(track as IDrivable).GoForward (120); // Это работает

Поскольку в этом примере член интерфейса реализован явно, его уровень доступа в реализации не указывается. Он определяется модифи­катором, заданным для самого интерфейса.

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

Резюме

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

  • Объект, реализующий некоторый интерфейс, может взаимодейство­вать с любым другим объектом, которому необходим этот интерфейс.

  • За реализацию членов интерфейса отвечает класс или структура, в которой этот интерфейс реализован. В классах, как и в структурах, допускается реализация нескольких интерфейсов.

  • Класс или структура, реализующая некоторый интерфейс, должна обеспечить реали­зацию всех членов, объявленных в этом интерфейсе.

  • В С# члены интерфейса реализуются двумя способами:

  • реализация члена с именем, сигнатурой и уровнем доступа, идентичными соответствующему члену интерфейса. Такие члены доступны как че­рез реализующий класс, так и через интер­фейс;

  • явная реализация члена интерфейса с указанием его полного имени. Такие члены доступны только через интерфейс.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]