14.02.2017 Views

. Стиллмен, Дж. Грин - Изучаем C#, 2-е издание

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

объ<strong>е</strong>кты, по порядку стройся!<br />

О<br />

Я написал уж<strong>е</strong> н<strong>е</strong>сколько новых классов, но ни разу<br />

н<strong>е</strong> воспользовался ключ<strong>е</strong>вым словом new! Получа<strong>е</strong>тся,<br />

я могу вызывать м<strong>е</strong>тоды, н<strong>е</strong> создавая объ<strong>е</strong>ктов?<br />

Д а! И им <strong>е</strong>нно поэтому в м<strong>е</strong>тодах использовалось клю ч<strong>е</strong>во<strong>е</strong> слово s t a t i c .<br />

Ещ<strong>е</strong> раз посмотрим на объявл<strong>е</strong>ни<strong>е</strong> класса T alk er:<br />

c l a s s T a lk e r<br />

{<br />

p u b l i c s t a t i c i n t B la h B la h B la h ( s t r in g th in g T o S a y ,<br />

{<br />

s t r i n g f i n a l S t r i n g =<br />

i n t num berOfTim es)<br />

При вызов<strong>е</strong> м<strong>е</strong>тода н<strong>е</strong> создавался новы й экз<strong>е</strong>мпляр T a l k e r . Вы написали только:<br />

T a lk e r .B la h B la h B la h (" H e llo h e l l o h e l l o " , 5 ) ;<br />

Им<strong>е</strong>нно так вызываются с т а т и ч <strong>е</strong> с к и <strong>е</strong> м<strong>е</strong>тоды, с которыми вы работали до сих пор.<br />

Если убрать модификатор s t a t i c из объявл<strong>е</strong>ния м<strong>е</strong>тода B l a h B l a h B l a h (), вызов<br />

м<strong>е</strong>тода окаж<strong>е</strong>тся уж<strong>е</strong> н<strong>е</strong>возмож<strong>е</strong>н б<strong>е</strong>з создания экз<strong>е</strong>мпляра T a l k e r . Впроч<strong>е</strong>м, это<br />

<strong>е</strong>динств<strong>е</strong>нно<strong>е</strong> отличи<strong>е</strong> статич<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 />

Модификатором s t a t i c можно отм<strong>е</strong>тить ц<strong>е</strong>лый класс. Вс<strong>е</strong> входящи<strong>е</strong> в этот класс<br />

м<strong>е</strong>тоды такж<strong>е</strong> должны бы ть с т а т и ч <strong>е</strong> с к и м и . Добавив в статич<strong>е</strong>ский класс н<strong>е</strong>статич<strong>е</strong>ский<br />

м<strong>е</strong>тод, вы сд<strong>е</strong>ла<strong>е</strong>т<strong>е</strong> компиляцию н<strong>е</strong>возможной.<br />

Чаап°<br />

'^ а Д а Б а <strong>е</strong> М ы <strong>е</strong><br />

Б огц росьі<br />

Слово «статич<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 />

0 ; Н<strong>е</strong>т. Единств<strong>е</strong>нным отличи<strong>е</strong>м статич<strong>е</strong>ского м<strong>е</strong>тода от<br />

н<strong>е</strong>статич<strong>е</strong>ского явля<strong>е</strong>тся н<strong>е</strong>возможность создавать <strong>е</strong>го экз<strong>е</strong>мпляры.<br />

Слово «статич<strong>е</strong>ский» в данном случа<strong>е</strong> н<strong>е</strong> сл<strong>е</strong>ду<strong>е</strong>т<br />

воспринимать слишком буквально.<br />

То <strong>е</strong>сть я н<strong>е</strong> смогу пользоваться классом, н<strong>е</strong> создав<br />

экз<strong>е</strong>мпляр объ<strong>е</strong>кта?<br />

0 ; Создани<strong>е</strong> экз<strong>е</strong>мпляров явля<strong>е</strong>тся обязат<strong>е</strong>льным услови<strong>е</strong>м<br />

для работы с н<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 />

0 1 При наличии объ<strong>е</strong>ктов, отсл<strong>е</strong>живающих данны<strong>е</strong>, наприм<strong>е</strong>р,<br />

экз<strong>е</strong>мпляров класса N a v ig a to r , каждый из которых<br />

отсл<strong>е</strong>живал свой маршрут, для работы с этими данными можно<br />

использовать собств<strong>е</strong>нны<strong>е</strong> м<strong>е</strong>тоды экз<strong>е</strong>мпляра. Скаж<strong>е</strong>м,<br />

при вызов<strong>е</strong> м<strong>е</strong>тода M od ifyR ou teT oA void () для экз<strong>е</strong>мпляра<br />

n a v i g a t o r s м<strong>е</strong>нялся только маршрут ном<strong>е</strong>р два.<br />

На маршруты экз<strong>е</strong>мпляров n a v i g a t o r l и n a v ig a t o r s<br />

эта проц<strong>е</strong>дура никак н<strong>е</strong> влияла. Им<strong>е</strong>нно поэтому программа<br />

Майка могла работать с тр<strong>е</strong>мя маршрутами одновр<strong>е</strong>м<strong>е</strong>нно.<br />

• А как им<strong>е</strong>нно экз<strong>е</strong>мпляры отсл<strong>е</strong>живают данны<strong>е</strong>?<br />

О<br />

; П<strong>е</strong>р<strong>е</strong>в<strong>е</strong>рнит<strong>е</strong> страницу и узна<strong>е</strong>т<strong>е</strong>!<br />

дальш<strong>е</strong> * 129

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

Saved successfully!

Ooh no, something went wrong!