. Стиллмен, Дж. Грин - Изучаем 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>ла<br />
Как вы зна<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>тся абстрактным<br />
(abstract method). Давгшт<strong>е</strong> <strong>е</strong>го р<strong>е</strong>ализу<strong>е</strong>м! Сообщ<strong>е</strong>ни<strong>е</strong> об ошибк<strong>е</strong><br />
должно исч<strong>е</strong>знуть. Продолжая абстрактный класс, нужно гарантировать<br />
п<strong>е</strong>р<strong>е</strong>крыти<strong>е</strong> вс<strong>е</strong>х <strong>е</strong>го абстрактных м<strong>е</strong>тодов. К счастью, достаточно нап<strong>е</strong>чатать<br />
«public override», и как только вы нажм<strong>е</strong>т<strong>е</strong> проб<strong>е</strong>л, появится список вс<strong>е</strong>х<br />
доступных для п<strong>е</strong>р<strong>е</strong>крытия м<strong>е</strong>тодов. Выб<strong>е</strong>рит<strong>е</strong> вариант S e tM issio n In f о ()<br />
и напишит<strong>е</strong>:<br />
abstract class PlanetMission {<br />
pi^lic(^abstrac^void SetMissionlnfo (<br />
int milesToPlanet, int rocketFuelPerMile,<br />
long rocketSpeedMPH);<br />
И н т <strong>е</strong> р ф <strong>е</strong> й с с о д <strong>е</strong> р ж и т<br />
т о л ь к о а б с т р а к т н ы <strong>е</strong> м <strong>е</strong> <br />
то д ы , п о э т о м у к л ю ч <strong>е</strong> в о <strong>е</strong><br />
с л о в о a b s tra c t п р и м <strong>е</strong> н я <br />
<strong>е</strong> т с я т о л ь к о к о гд а р <strong>е</strong> ч ь<br />
и д <strong>е</strong> т о б а б с т р а к т н ы х<br />
к л а с с а х . Т о л ь к о т а к и <strong>е</strong><br />
к л а с с ы м о гу т и м <strong>е</strong> т ь<br />
в с в о <strong>е</strong> м с о с т а в <strong>е</strong> а б <br />
с т р а к т н ы <strong>е</strong> м <strong>е</strong> то д ы .<br />
// остальной код класса...<br />
П о бмЭу э^v^0M д л <strong>е</strong> т<br />
Жизнь абстрактного Л<br />
Г м<strong>е</strong>тода ужасна. В<strong>е</strong>дь ч<br />
это жизнь б<strong>е</strong>з т<strong>е</strong>ла. )<br />
1лрогрйММй нб ь-а<br />
Попытавшись построить программу, вы получит<strong>е</strong> сообщ<strong>е</strong>ни<strong>е</strong> об отсутствии<br />
р<strong>е</strong>ализации унасл<strong>е</strong>дованного абстрактного чл<strong>е</strong>на:<br />
'V e n u sM issio n ' d o e s n o t im plem ent i n h e r i t e d a b s t r a c t<br />
^ member ' P l a n e t M i s s i o n .S e t M i s s io n l n f o ( l o n g , i n t , i n t ) '<br />
Так давайт<strong>е</strong> р<strong>е</strong>ализу<strong>е</strong>м <strong>е</strong>го! Ошибка сразу исч<strong>е</strong>зн<strong>е</strong>т.<br />
c l a s s V enus : P la n e t M is s io n {<br />
p u b l i c V enus О {<br />
S e t M i s s i n l n f o (4 0 0 0 0 0 0 0 , 1 0 0 0 0 0 , 25000)<br />
} spr<br />
Насл<strong>е</strong>дуя от<br />
абстрактного<br />
класса, нужно<br />
п<strong>е</strong>р<strong>е</strong>крыть ос<strong>е</strong><br />
<strong>е</strong>го абстрактны<strong>е</strong><br />
м<strong>е</strong>тоды.<br />
p u b l i c o v e r r id e S e t M i s s i o n l n f o ( i n t m ile s T o P la n e t , lo n g r o c k e tF u e lP e r M ile ,<br />
}<br />
i n t rocketSpeedM PH) {<br />
t h i s .M il e s T o P l a n e t = m ile s T o P la n e t ;<br />
t h is - R o c k e t F u e lP e r M ile = r o c k e tF u e lP e r M ile ;<br />
th is.R o ck etS p eed M P H = rocketSpeedM PH ;<br />
дальш<strong>е</strong> > 313