14.02.2017 Views

. Стиллмен, Дж. Грин - Изучаем 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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!