Для чего нужны интерфейсы
Интерфейс не несет в себе никакой функциональности, а объявлен- ные в интерфейсе методы можно реализовать в классе и без существо- вания интерфейса. Почему же он бывает необходим?
Интерфейс может быть базовым классом для нескольких производных для реализации динамического связывания (вызова перегруженных ме- тодов).
Если Вы решили реализовать класс с интерфейсом, который будет использовать какая-либо программа (клиент), то компилятор не позво- лит Вам сделать ошибку в количестве методов, которые необходимо реа- лизовать, сигнатуре каждого метода интерфейса и возвращаемом им значении.
Программа, использующая класс, в котором должен быть реализован интерфейс, может удостовериться в этом, прежде чем вызывать его ин- терфейсные методы, с помощью рефлексии или операторов as или is:
if (!(ob is IA))
throw new Exception ("Объект НЕ реализует интерфейс IA");
Ряд средств языка во время выполнения программы так же осуществ- ляют проверку наличия интерфейса.
Например, оператор foreach опрашивает объект, на предмет того, реализует ли он интерфейс System.Collection.IEnumerable.
Если Вы подготовили объект с этим интерфейсом, то оператор foreach будет успешно использовать Ваш метод GetEnumerator(). Этот метод возвратит объект с методом MoveNext() и свойством Current для доступа к очередному элементу коллекции.
Если окажется, что объект не реализует требуемый интерфейс, foreach сгенерирует исключение.
© ООО «Знанио»
С вами с 2009 года.