Использование интерфейсных ссылок

  • docx
  • 18.11.2021
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Л2-002164.docx

Использование интерфейсных ссылок

Ссылочная переменная интерфейсного типа может ссылаться на лю- бой объект, который реализует ее интерфейс.

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

Важно понимать, что интерфейсная ссылочная переменная "осведом- лена" только о методах, объявленных "под сенью" ключевого слова interface. Следовательно, интерфейсную ссылочную переменную нельзя использовать для доступа к другим переменным или методам, которые может определить объект, реализующий этот интерфейс.

 

Интерфейсные свойства

 

Формат объявления: тип        имя

{

get; set;

}

 

Свойства, предназначенные только для чтения или только для запи- си, содержат только get- или set-элемент, соответственно.

 

Интерфейсные индексаторы

 

Формат объявления: тип_элементa this [int индекс]

{

get; set;

}

 

Индексаторы, предназначенные только для чтения или только для записи, содержат только get- или set- элемент, соответственно.

 

Наследование интерфейсами интерфейсов

Один интерфейс может унаследовать "богатство" другого. Синтаксис этого механизма аналогичен синтаксису, используемому для наследова- ния классов.

Если класс реализует интерфейс, который наследует другой интер- фейс, этот класс должен обеспечить способы реализации для всех чле- нов, определенных внутри цепочки наследования интерфейсов.

 

Пример:

 

public interface IA { . . . } public interface IВ : IA { . . . }

class MyClass : { . . . }    // Класс должен реализовать члены IA и

IB


В производном интерфейсе можно объявить член, который скрывает член, определенный в базовом интерфейсе (член д.б. помечен как new).

 

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

При реализации члена интерфейса можно квалифицировать его имя с использованием имени интерфейса (явная реализация).

В этом случае такой член будет недоступен вне класса. interface IA

{

int   Method (int x);

}

 

// Явная реализация интерфейсного метода

class Class : IA

{

int IA.Method(int x)

{

return x / 3;

}

}

 

Причина: класс может реализовать два интерфейса, которые объяв- ляют методы с одинаковыми именами и типами. Полная квалификация имен позволяет избежать неопределенности.