* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна!
Реализация членов интерфейса на Visual C#
8 февраля 2009
На Visual C# члены интерфейсов, объявленных в классах и структурах, реализуют следующим образом. Для этого определяют член с именем, совпадающим с и менем члена интерфейса, причем этот член класса объявляется с тем же уровнем доступа, с которым объявлен интерфейс. Вот пример реализации метода как члена интер- фейса:
Visual C# public interface IDrivable { void GoForward(int Speed); } public class Truck : IDrivable { public void GoForward(int Speed) { // Реализация опущена . I Члены интерфейса, реализованные таким способом, становятся доступны как интерфейсу, так и самому классу. В результате эти члены можно вызывать после преобразования объекта, где интерфейс реализован, в его собственный тип либо в тип этого интерфейса. Кроме того, допустимо реализовать интерфейс в классе явно. Члены, ревизо- ванные подобным образом, доступны только после преобразования объекта в тип интерфейса. Чтобы реализовать член интерфейса явно, следует объявить в классе одноименный член, указав полное имя интерфейса. Вот пример явно реализован- ного метода GoForward, являющегося членом интерфейса IDrivable: Visual C# public class Truck : IDrivable { void IDrivable. GoForward(int Speed) { // Реализация опущена Обратите внимание, что у этого члена нет модификатора доступа. Поскольку этот член интерфейса реализован явно, его уровень доступа определяется модифи- катором, заданным для интерфейса. Чтобы реализовать интерфейс в программе на С#, необходимо выполнить сле- дующие действия. 1. Объявите класс с нужным интерфейсом при помощи двоеточия (;). Так можно указать несколько интерфейсов, разделив их имена запятыми. 2. Напишите реализацию для всех членов интерфейса: • чтобы член оказался доступен как через класс, так и через интерфейс, объя- вите этот член с именем, уровнем доступа и сигнатурой, идентичным тако- вым членам интерфейса; • чтобы сделать член доступным только через интерфейс, объявите его при по- мощи полного имени интерфейса, указывать модификатор доступа при этом не обязательно.