. Стиллмен, Дж. Грин - Изучаем C#, 2-е издание
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
насл<strong>е</strong>довани<strong>е</strong><br />
Вм<strong>е</strong>сто базового класса мо)кно в зя ть один из производных<br />
Насл<strong>е</strong>довани<strong>е</strong> позволя<strong>е</strong>т использовать производный класс вм<strong>е</strong>сто базового.<br />
К прим<strong>е</strong>ру, <strong>е</strong>сли м<strong>е</strong>тод R e c i p e ( ) б<strong>е</strong>р<strong>е</strong>т объ<strong>е</strong>кт C h e e s e , в то вр<strong>е</strong>мя как класс<br />
A g e d V e r m o n tC h e d d a r насл<strong>е</strong>ду<strong>е</strong>т от класса C h e e s e , м<strong>е</strong>тоду R e c i p e () можно<br />
п<strong>е</strong>р<strong>е</strong>дать экз<strong>е</strong>мпляр A g e d V e r m o n tC h e d d a r . В р<strong>е</strong>зультат<strong>е</strong> м<strong>е</strong>тод R e c i p e () буд<strong>е</strong>т<br />
им<strong>е</strong>ть доступ только к полям, м<strong>е</strong>тодам и свойствам класса C h e e s e , но н<strong>е</strong> «увидит»<br />
эл<strong>е</strong>м<strong>е</strong>нты класса A g e d V e r m o n tC h e d d a r .<br />
Допустим, у нас им<strong>е</strong><strong>е</strong>тся м<strong>е</strong>тод, анализирующий объ<strong>е</strong>кты S a n d w ic h :<br />
p u b l i c v o id S a n d w ic h A n a ly ze r(S a n d w ich sp ecim en ) {<br />
)<br />
i n t c a l o r i e s = s p e c im e n .C o u n t C a lo r ie s 0 ;<br />
U p d a t e D i e t P l a n ( c a l o r i e s ) ;<br />
P e r fo r m B r e a d C a lc u la tio n s(sp e c im e n .S lic e sO fB r e a d , s p e c im e n .T o a s te d ) ;<br />
Sandwich<br />
Toasted<br />
SlicesOfBread<br />
CountCaloriesO<br />
BLT<br />
SlicesOfBacon<br />
AmountOfLettuce<br />
AddSideOfFriesO<br />
© М<strong>е</strong>тоду можно п<strong>е</strong>р<strong>е</strong>дать объ<strong>е</strong>кт сэндвич, а можно с б<strong>е</strong>коном, салатом и помидорами<br />
BLT (сэндвич). Свойства этого сп<strong>е</strong>циального мы насл<strong>е</strong>ду<strong>е</strong>м от класса<br />
S a n d w ic h :<br />
p u b l i c b u t t o n l _ C l i c k ( o b j e c t s e n d e r , E v en tA rg s e) {<br />
}<br />
BLT myBLT = new BLT() ;<br />
S a n d w ich A n alyzer(m yB L T );<br />
Подробно oS э т о м<br />
Mt>i поговорим<br />
6 сл<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>рх<br />
по диаграмм<strong>е</strong> классов запр<strong>е</strong>щ<strong>е</strong>но.<br />
p u b l i c b u t t o n 2 _ C l i c k ( o b j e c t se n d e r , E ven tA rgs e) {<br />
S an dw ich m ySandwich = new S a n d w ic h ( );<br />
BLT myBLT = new BLT();<br />
S an dw ich som eRandomSandwich = myBLT;<br />
Знач<strong>е</strong>ни<strong>е</strong> myBLT м о ж <br />
но присвоить люоои<br />
п<strong>е</strong>р<strong>е</strong>м<strong>е</strong>нной класса<br />
Sandw chj т ак как<br />
0LT — э т о подвид<br />
сэндвича.<br />
}<br />
BLT anotherB L T = m ySandwich; / / < - - - ЭТО HE КСЙЯ1ИЛИРУЕТСЯ! ! !<br />
ка компилироват ься н<strong>е</strong>^дуд<strong>е</strong>т<br />
дальш<strong>е</strong> ► 255