. Стиллмен, Дж. Грин - Изучаем 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><br />
Производны<strong>е</strong> классы расширяют<br />
базовый<br />
'<br />
Вы н<strong>е</strong> огранич<strong>е</strong>ны м<strong>е</strong>тодами, которы<strong>е</strong> производный<br />
класс насл<strong>е</strong>ду<strong>е</strong>т от базового... впроч<strong>е</strong>м, вы это<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>й,<br />
свойств и м<strong>е</strong>тодов. Можно л<strong>е</strong>гко добавить собакам<br />
м<strong>е</strong>тод F e tc h О (Прин<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>н только для псовых и никак<br />
н<strong>е</strong> повлия<strong>е</strong>т на классы Wolf, Canine, Animal,<br />
Hippo и любы<strong>е</strong> други<strong>е</strong>.<br />
созда<strong>е</strong>м новый обь<strong>е</strong>км Род<br />
вызыва<strong>е</strong>м м<strong>е</strong>мод класса Род<br />
Dog s p o t = new D o g ( ) ;<br />
s p o t . M a k e N o is e ( ) ;<br />
вызыва<strong>е</strong>м м<strong>е</strong>мод класса Animal s p o t . Roam ( ) ;<br />
вызыва<strong>е</strong>м м<strong>е</strong>мод класса Canine s p o t . E a t {) ;<br />
и-<strong>е</strong>-рар-^-я, сущ.<br />
расп олож <strong>е</strong>н и <strong>е</strong> групп одна<br />
ПОД другой в соотв<strong>е</strong>тстви и<br />
с и х рангом . Пр<strong>е</strong>зид<strong>е</strong>нт компании<br />
прош<strong>е</strong>л в<strong>е</strong>сь путь от<br />
курь<strong>е</strong>ра до в<strong>е</strong>рхов корпоративной<br />
и<strong>е</strong>рархии.<br />
Anim al<br />
Picture<br />
Food<br />
Hunger<br />
Boundaries<br />
Location<br />
IVIakeNoiseO<br />
Eat()<br />
SleepO<br />
Roam()<br />
вызыва<strong>е</strong>м м<strong>е</strong>мод класса Canine<br />
s p o t . S l e e p ( ) ;<br />
Canine<br />
вызыва<strong>е</strong>м м<strong>е</strong>мод класса Род<br />
s p o t . F e tc h<br />
Eat()<br />
SleepO<br />
C # Вс<strong>е</strong>гда начина<strong>е</strong>т с наибол<strong>е</strong><strong>е</strong> индивидуального м<strong>е</strong>тода<br />
П<strong>е</strong>р<strong>е</strong>м<strong>е</strong>щаться собаку заставля<strong>е</strong>т вс<strong>е</strong>го один м<strong>е</strong>тод из класса A n im a l. А вот<br />
какой из м<strong>е</strong>тодов M a k e N o is e ( ) нужно вызвать, чтобы собака залаяла?<br />
Понять это н<strong>е</strong>сложно. М<strong>е</strong>тоды класса D o g пр<strong>е</strong>дставляют собой д<strong>е</strong>йствия<br />
вс<strong>е</strong>х собак. А м<strong>е</strong>тоды класса C a n in e —д<strong>е</strong>йствия вс<strong>е</strong>х псовых. М<strong>е</strong>тоды класса<br />
A n im a l являются описани<strong>е</strong>м пов<strong>е</strong>д<strong>е</strong>ния, общ<strong>е</strong>го для вс<strong>е</strong>х животных. Поэтому<br />
<strong>е</strong>сли нужно заставить собаку лаять, <strong>C#</strong> сначала «заглян<strong>е</strong>т» в класс D og,<br />
чтобы найти пов<strong>е</strong>д<strong>е</strong>ни<strong>е</strong>, присущ<strong>е</strong><strong>е</strong> им<strong>е</strong>нно собакам. Если таково<strong>е</strong> отсутству<strong>е</strong>т,<br />
буд<strong>е</strong>т пров<strong>е</strong>р<strong>е</strong>н класс C a n in e , а потом класс A n im a l.<br />
Dog<br />
IVIai