. Стиллмен, Дж. Грин - Изучаем 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> могу получить<br />
экз<strong>е</strong>мпляры? Зач<strong>е</strong>м он вообщ<strong>е</strong> нуж<strong>е</strong>н?<br />
c l a s s Plan0 tMission {<br />
}<br />
Класс PlanetMission клуб<br />
аст рофизиков использу<strong>е</strong>т<br />
для отправки рак<strong>е</strong>т —<br />
к различным план<strong>е</strong>т ам. \<br />
p u b l i c lo n g R o c k e tF u e lP e r M ile ;<br />
p u b l i c lo n g RocketSpeedM PH;<br />
p u b l i c i n t M ile s T o P la n e t ;<br />
p u b l i c lo n g U n its O fF u e lN e e d e d () {<br />
}<br />
Иногда источником части кода являю тся производны <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>рархии обычно задаются в производных<br />
классах. В класс<strong>е</strong> Animal могут находится вычисл<strong>е</strong>ния, зависящи<strong>е</strong> от знач<strong>е</strong>ния<br />
логич<strong>е</strong>ской п<strong>е</strong>р<strong>е</strong>м<strong>е</strong>нной HasTail или Vertebrate, но в н<strong>е</strong>м н<strong>е</strong>возможно<br />
задать эту п<strong>е</strong>р<strong>е</strong>м<strong>е</strong>нную.<br />
Вот <strong>е</strong>щ<strong>е</strong> один прим<strong>е</strong>р...<br />
J<br />
Присваивать этим<br />
полям знач<strong>е</strong>ния в<br />
базовом класс<strong>е</strong> б<strong>е</strong>ссмысл<strong>е</strong>нно,<br />
потому<br />
что мы н<strong>е</strong> зна<strong>е</strong>м,<br />
какая рак<strong>е</strong>та куда<br />
пол<strong>е</strong>тит.<br />
r e t u r n M ile s T o P la n e t * R o c k e tF u e lP e r M ile ;<br />
p u b l i c i n t T im eN eededO {<br />
}<br />
r e t u r n M ile s T o P la n e t / ( i n t ) RocketSpeedM PH;<br />
p u b l i c s t r i n g F u e lN e e d e d 0 (<br />
}<br />
r e t u r n " Y o u 'll n e e d "<br />
+ M ile s T o P la n e t * R o c k e tF u e lP e r M ile<br />
+ " u n i t s o f f u e l t o g e t t h e r e . I t ' l l ta k e<br />
+ T im eN eed ed () + " h o u r s ." ;<br />
Один пол<strong>е</strong>т сов<strong>е</strong>рша<strong>е</strong>мся на<br />
В<strong>е</strong>н<strong>е</strong>ру, другой-на Марс.<br />
\<br />
c l a s s Venus : P la n e t M is s io n {<br />
}<br />
p u b l i c V enus О {<br />
}<br />
M ile s T o P la n e t = 4 0 0 0 0 0 0 0 ;<br />
R o c k e tF u e lP e r M ile = 100000;<br />
RocketSpeedMPH = 25000;<br />
c l a s s Mars : P la n e t M is s io n {<br />
p u b l i c Mars 0 {<br />
M ile s T o P la n e t = 7500 0 0 0 0 ;<br />
R o c k e tF u e lP e r M ile = 1 00000;<br />
RocketSpeedMPH = 25000;<br />
}<br />
} Конструкторы производных классов^Мап<br />
и Venus задают знач<strong>е</strong>ния тр<strong>е</strong>х пол<strong>е</strong>й, унасл<strong>е</strong>дованных<br />
от класса Planet. Но поля н<strong>е</strong><br />
могут получить знач<strong>е</strong>ния от экз<strong>е</strong>мпляра<br />
Planet. Что произойд<strong>е</strong>т, <strong>е</strong>сли их ‘допыта<strong>е</strong>тся<br />
использовать м<strong>е</strong>тод FuelNeeaed{).<br />
p r i v a t e v o id b u t t o n l _ C l i c k ( o b j e c t s .<br />
Mars mars = new M a rs( );<br />
M essa g eB o x . S h ow (m ars. F u e lN e e d e d ())<br />
}<br />
E ven tA rgs e) {<br />
p r i v a t e v o id b u t t o n 2 _ C lic k ( o b j e c t s ,<br />
V enus v e n u s = new V e n u s() ;<br />
E ven tA rgs e) {<br />
M essageB ox. Show (v en u s . F u elN eed ed ( ) ) ;<br />
}<br />
p r i v a t e v o id b u t t o n 3 _ C lic k ( o b j e c t s , E v en tA rg s e) {<br />
P la n e t M is s io n p l a n e t = new P la n e t M i s s i o n ( );<br />
M essageB ox. Show ( p l a n e t . F u elN eed ed ( ) ) ; — —<br />
}<br />
П <strong>е</strong> р <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> ...<br />
дальш<strong>е</strong> ► 311