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><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

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

Saved successfully!

Ooh no, something went wrong!