Интерфейсы

Многие программисты знакомы с концепцией множественного наследования (multiple inheritance) — возможности определения класса, производного от двух или более базовых классов. Допустим, имеется класс TransmitData, предназначенный для передачи данных, и класс ReceiveData, обеспечивающий получение данных. Допустим, нужно создать класс SocketPort, который может и получать, и передавать данные. Для этого класс SocketPort должен наследовать одновременно от обоих классов: TransmitData и ReceiveData. Некоторые языки программирования разрешают множественное наследование, позволяя создать класс SocketPort, производный от двух базовых классов. Однако CLR (а значит, и все основанные на этой среде языки программирования) множественное наследование не поддерживает. Вместе с тем CLR позволяет реализовать ограниченное множественное наследование через интерфейсы (interfaces).

Внутри интерфейса могут хранится методы, события, свойства. Последние два в принципе и являются методами, просто в упрощённом синтаксисе. Пример объявления интерфейса:

public interface IDisposable {
  void Dispose();
}
public interface IEnumerable {
  IEnumerator GetEnumerator();
}
public interface IEnumerable<T> : IEnumerable {
  IEnumerator<T> GetEnumerator();
}

public interfaceICollection<T>:IEnumerable<T>,IEnumerable {
  void Add(T item);
  void Clear();
  Boolean Contains(T item);
  void CopyTo(T[] array,Int32 arrayIndex);
  Boolean Remove(T item);
  Int32  Count{get;} //Свойство только для чтения
  Boolean IsReadOnly{get;} //Свойство только для чтения
}

results matching ""

    No results matching ""