. Стиллмен, Дж. Грин - Изучаем C#, 2-е издание
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
1$ показыва<strong>е</strong>т Вам, что им<strong>е</strong>нно объ<strong>е</strong>кт р<strong>е</strong>ализу<strong>е</strong>т<br />
а$ показыва<strong>е</strong>т компилятору, как обработать этот объ<strong>е</strong>кт<br />
Иногда тр<strong>е</strong>бу<strong>е</strong>тся вызвать м<strong>е</strong>тод, получ<strong>е</strong>нный объ<strong>е</strong>ктом в проц<strong>е</strong>сс<strong>е</strong> р<strong>е</strong>ализации<br />
инт<strong>е</strong>рф<strong>е</strong>йса. Но что д<strong>е</strong>лать, <strong>е</strong>сли вы н<strong>е</strong> зна<strong>е</strong>т<strong>е</strong>, нужному ли типу принадл<strong>е</strong>жит<br />
объ<strong>е</strong>кт? На помощь вам прид<strong>е</strong>т оп<strong>е</strong>ратор 1б. А оп<strong>е</strong>ратор аз позволит пр<strong>е</strong>образовать<br />
один совм<strong>е</strong>стимый ссылочный тип в другой.<br />
инт<strong>е</strong>рф<strong>е</strong>йсы и абстрактны<strong>е</strong> классы<br />
IWorker[] bees = new IWorker[3];<br />
beesEO] = new NectarStinger{)<br />
bees [1] = new RoboBeeO;<br />
bees [2] = new Worker 0;<br />
Mw п<strong>е</strong>р<strong>е</strong>бира<strong>е</strong>м пч<strong>е</strong>л.--<br />
for (int i = 0; i < bees.Length; i++) {<br />
C ^ i f<br />
- .Mпров<strong>е</strong>ря<strong>е</strong>м,<br />
р<strong>е</strong>ализу<strong>е</strong>т<br />
ли пч<strong>е</strong>ла<br />
инт<strong>е</strong>рф<strong>е</strong>йс<br />
INectarCollector.<br />
Возьми в руку карандаш<br />
(bees[i] is INectarCollector)<br />
INectarCollector thisCollector;<br />
thisCollector = bees [i]<br />
thisCollector.GatherNectarо ;<br />
f<br />
* * ' Т<strong>е</strong>п<strong>е</strong>рь можно вызывать м<strong>е</strong>тоды<br />
инт<strong>е</strong>рф<strong>е</strong>йса INectarCollector.<br />
{<br />
Cor.<br />
Мы н<strong>е</strong> мож<strong>е</strong>м вызывать<br />
для пч<strong>е</strong>л м <strong>е</strong><br />
тоды инт<strong>е</strong>рф<strong>е</strong>йса<br />
INectarCollector- В<strong>е</strong>дь<br />
пч<strong>е</strong>лы принадл<strong>е</strong>жат<br />
типу M arker и нич<strong>е</strong>го<br />
н<strong>е</strong> знают о м<strong>е</strong>тодах<br />
INectarCollector.<br />
INectarCollector;<br />
Для каждого из показанных справа оп<strong>е</strong>раторов напишит<strong>е</strong>, при каком знач<strong>е</strong>нии сч<strong>е</strong>тчика<br />
пч<strong>е</strong>л i он буд<strong>е</strong>т им<strong>е</strong>ть знач<strong>е</strong>ни<strong>е</strong> tr u e . Зач<strong>е</strong>ркнит<strong>е</strong> сл<strong>е</strong>ва дв<strong>е</strong> строчки, которы<strong>е</strong><br />
н<strong>е</strong> компилируются.<br />
Г-, „ -гг. 1 Г01<br />
i w o r k e r [] B e es = new i w o r k e r [8 ];<br />
1. ( B e e s [ i ] i s I N e c t a r C o l l e c t o r )<br />
B e es [0] = new N e c t a r S t i n g e r 0 ;<br />
B e e s [ l] = new R o b o B eeO ; ................................................................................................<br />
B e e s [2] = new W orker 0 ;<br />
B e e s [3 ] = B e e s [0 ]<br />
B e e s [4] = i s t i n g P a t r o l ;<br />
B e es [5] = n u l l ;<br />
B e es [6] = B e es [0] ;<br />
a s IW orker;<br />
B e es [7] = new I N e c t a r C o l l e c t o r {) ;<br />
2 . (Bees[i] is istingPatrol)<br />
3. ( B e e s [ i ] i s IW o r k e r )<br />
дальш<strong>е</strong> > 297