Использование интерфейсных ссылок
Ссылочная переменная интерфейсного типа может ссылаться на лю- бой объект, который реализует ее интерфейс.
В этом случае интерфейс выступает в роли базового класса, а его на- следники являются производными классами. Поэтому в случае наследо- вания интерфейса работает тот же механизм, что и для классов.
Важно понимать, что интерфейсная ссылочная переменная "осведом- лена" только о методах, объявленных "под сенью" ключевого слова interface. Следовательно, интерфейсную ссылочную переменную нельзя использовать для доступа к другим переменным или методам, которые может определить объект, реализующий этот интерфейс.
Интерфейсные свойства
Формат объявления: тип имя
{
get; set;
}
Свойства, предназначенные только для чтения или только для запи- си, содержат только get- или set-элемент, соответственно.
Интерфейсные индексаторы
Формат объявления: тип_элементa this [int индекс]
{
get; set;
}
Индексаторы, предназначенные только для чтения или только для записи, содержат только get- или set- элемент, соответственно.
Наследование интерфейсами интерфейсов
Один интерфейс может унаследовать "богатство" другого. Синтаксис этого механизма аналогичен синтаксису, используемому для наследова- ния классов.
Если класс реализует интерфейс, который наследует другой интер- фейс, этот класс должен обеспечить способы реализации для всех чле- нов, определенных внутри цепочки наследования интерфейсов.
Пример:
public interface IA { . . . } public interface IВ : IA { . . . }
class MyClass : IВ { . . . } // Класс должен реализовать члены IA и
IB
В производном интерфейсе можно объявить член, который скрывает член, определенный в базовом интерфейсе (член д.б. помечен как new).
Явная реализация членов интерфейса
При реализации члена интерфейса можно квалифицировать его имя с использованием имени интерфейса (явная реализация).
В этом случае такой член будет недоступен вне класса. interface IA
{
int Method (int x);
}
// Явная реализация интерфейсного метода
class Class : IA
{
int IA.Method(int x)
{
return x / 3;
}
}
Причина: класс может реализовать два интерфейса, которые объяв- ляют методы с одинаковыми именами и типами. Полная квалификация имен позволяет избежать неопределенности.
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.