. Стиллмен, Дж. Грин - Изучаем C#, 2-е издание
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
инт<strong>е</strong>рф<strong>е</strong>йсы и абстрактны<strong>е</strong> классы<br />
Нисходящ<strong>е</strong><strong>е</strong> и Восходящ<strong>е</strong><strong>е</strong> прив<strong>е</strong>д<strong>е</strong>ни<strong>е</strong> инт<strong>е</strong>рф<strong>е</strong>йсов<br />
Вы уж<strong>е</strong> вид<strong>е</strong>ли, что оп<strong>е</strong>раторы i s и a s работают с инт<strong>е</strong>рф<strong>е</strong>йсами. Значит, для них возможны оп<strong>е</strong>рации<br />
восходящ<strong>е</strong>го и нисходящ<strong>е</strong>го прив<strong>е</strong>д<strong>е</strong>ния. Добавим инт<strong>е</strong>рф<strong>е</strong>йс I C o o k s F o o d к любому классу который<br />
ум<strong>е</strong><strong>е</strong>т подогр<strong>е</strong>вать <strong>е</strong>ду. Добавим такж<strong>е</strong> класс M ic r o w a v e (Микроволновка). Наряду с классом O v en он<br />
буд<strong>е</strong>т р<strong>е</strong>ализовывать инт<strong>е</strong>рф<strong>е</strong>йс IC o o k s F o o d . В р<strong>е</strong>зультат<strong>е</strong> вы получит<strong>е</strong> три способа доступа к объ<strong>е</strong>кту<br />
O ven. А функция I n t e l l i S e n s e подскаж<strong>е</strong>т, каки<strong>е</strong> оп<strong>е</strong>рации вы мож<strong>е</strong>т<strong>е</strong> производить в каждом из этих<br />
тр<strong>е</strong>х случа<strong>е</strong>в:<br />
O v en m i s t e r T o a s t y = n ew O v en О<br />
m i s t e r T o a s t y .<br />
Сразу посл<strong>е</strong> ввода<br />
мочки функця<br />
IntelliSense<br />
выв<strong>е</strong>д<strong>е</strong>т список<br />
вс<strong>е</strong>я возможных<br />
чл<strong>е</strong>нов.<br />
•mCapacity<br />
ж Color<br />
: ConsumePower<br />
Equals<br />
GetHashCode<br />
GetType<br />
' HeatUp<br />
Я * Pluggedin<br />
Preheat<br />
Reheat<br />
I C o o k s F o o d c o o k e r ;<br />
i f ( m i s t e r T o a s t y i s I C o o k s F o o d )<br />
lint Oven.Capacit/<br />
misterToasty — это ссылка<br />
класса Oven, указываю-<br />
‘ ш,ая на обь<strong>е</strong>кт Oven, так<br />
что у вас <strong>е</strong>сть доступ ко<br />
вс<strong>е</strong>м свойствам ц м <strong>е</strong>т о-<br />
, дам этого класса... но это<br />
[ссылка м<strong>е</strong>н<strong>е</strong><strong>е</strong> общ<strong>е</strong>го типа,<br />
j поэтому указывать она<br />
мож<strong>е</strong>т только на объ<strong>е</strong>кты<br />
класса Oven.<br />
Capacity<br />
(interface)<br />
ICooksFood<br />
Capacity<br />
HeatUpO<br />
ReheatO<br />
_<br />
Любой класс,<br />
р<strong>е</strong>ализующий<br />
инт<strong>е</strong>рф<strong>е</strong>йс<br />
1Соо1аРоо1^,<br />
относится к<br />
приборам, которы<strong>е</strong><br />
могут<br />
разогр<strong>е</strong>вать<br />
ИeatUp() <strong>е</strong>ду.<br />
Microwave<br />
Capacity<br />
c o o k e r = m i s t e r T o a s t y a s I C o o k s F o o d ;<br />
c o o k e r .<br />
Equals<br />
GetHashCode<br />
GetType<br />
♦ HeatUp<br />
* Reheat<br />
ToString<br />
A p p l i a n c e p o w e r C o n su m e r ;<br />
lint ICooksFood.Capaclty<br />
i f ( m i s t e r T o a s t y i s A p p l i a n c e )<br />
p o w e r C o n su m e r = m i s t e r T o a s t y ;<br />
p o w e r C o n s u m e r .<br />
Ссылка powerConsumer<br />
принадл<strong>е</strong>жит классу<br />
АррИам<strong>е</strong>. Она да<strong>е</strong>т<br />
доступ к открытым<br />
полям, м<strong>е</strong>тодам и свойствам<br />
этого класса. Но<br />
при ж<strong>е</strong>лании вы мож<strong>е</strong>т<strong>е</strong><br />
с <strong>е</strong><strong>е</strong> помощью сослаться<br />
на обь<strong>е</strong>кт CoffeeMaker.<br />
ConsumePower<br />
Equals<br />
GetHashCode<br />
GetType<br />
^ Pluggedin<br />
"^T o S tring<br />
Ссылка cooker принадл<strong>е</strong>жит<br />
инт<strong>е</strong>рф<strong>е</strong>йсу ICooksFood<br />
и указыва<strong>е</strong>т на т от ж<strong>е</strong><br />
обь<strong>е</strong>кт Oven. Она да<strong>е</strong>т<br />
доступ только к чл<strong>е</strong>нам<br />
инт<strong>е</strong>рф<strong>е</strong>йса ICooksFood, но<br />
при этом мож<strong>е</strong>т указывать<br />
на обь<strong>е</strong>кт Microwave.<br />
[icolor Appllance.Color<br />
PreheatO<br />
HeatUpQ<br />
ReheatO<br />
HeatUpO<br />
ReheatO<br />
MakePopcornO<br />
Три ссылки на<br />
один и тот ж<strong>е</strong><br />
объ<strong>е</strong>кт дают доступ<br />
к различным<br />
м<strong>е</strong>тодам и свойствам,<br />
в зависимости<br />
от сво<strong>е</strong>го<br />
типа.<br />
дальш<strong>е</strong> > 301