Высокоуровневые методы информатики и программирования. Тузовский А.Ф. - 101 стр.

UptoLike

Составители: 

101
void IMyInterface.Method3( ) {...}
//другие методы и элементы
}
Отметим, что в этом случае методы интерфейса должны быть неявно
описаны как закрытые (по умолчанию); для них нельзя использовать
другой режим доступа, включая и private. В этом случае, клиент мо-
жет вызывать явно заданные методы интерфейса только с помощью пе-
ременной интерфейсного типа:
IMyInterface obj;
obj = new MyClass( );
obj.Method1( );
6.3.3. Приведение к типу интерфейса
Как уже было сказано, интерфейсы являются абстрактными типа-
ми и поэтому не могут использоваться непосредственно. Для примене-
ния интерфейса нужно выполнить преобразование объекта, который его
реализует, в ссылочную переменную интерфейсного типа. Имеются два
способа преобразования типа: неявное и явное.
При простом присваивании интерфейсной переменной экземпляра
класса выполняется неявное преобразование типов:
IMyInterface obj;
obj = new MyClass( );
obj.Method1( );
Если класс MyClass не реализует интерфейс IMyInterface, то при
компиляции будет выдаваться сообщение об ошибке, так как компиля-
тор может читать метаданные класса и поэтому может заранее опреде-
лить, реализует ли класс заданный интерфейс.
Однако существует много ситуаций, когда нельзя использовать
неявное преобразование. В этих случаях нужно использовать явное пре-
образование (кастинг):
IMyInterface obj;
// ...
obj = (IMyInterface)new MyClass( );
obj.Method1( );
Однако следует помнить, что если объект, к которому применяется яв-
ное преобразование, не поддерживает требуемый интерфейс, то во вре-
мя выполнения будет формироваться исключение (exception) и если
его не обработать, то работа программы завершаться аварийно.
Для того, чтобы избежать таких ситуаций нужно использовать
операцию as. Например:
IMyInterface obj;
MyClass с = new MyClass( );