. Стиллмен, Дж. Грин - Изучаем C#, 2-е издание
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
скры т ь и обнаружит ь<br />
Произбодный класс ум<strong>е</strong><strong>е</strong>т скрыбать м<strong>е</strong>тоды<br />
Запустит<strong>е</strong> пpoгpaммyJewelThief. Так как это консольно<strong>е</strong> прилож<strong>е</strong>ни<strong>е</strong>, вывод р<strong>е</strong>зультатов осущ<strong>е</strong>ствля<strong>е</strong>тся<br />
ч<strong>е</strong>р<strong>е</strong>з командно<strong>е</strong> окно. Вот как это выглядит:<br />
file;///C:/Usera/aftctraw/Dgcuwents/V№ttai Studio aaiO/Pfojerts/Chapttr 6 соё<strong>е</strong>/lawei<br />
rhank you for 3*etmining jew els! S p a rk le , sp a rk le !<br />
Вы ожидали, что программа напиш<strong>е</strong>т ко<strong>е</strong>-что друго<strong>е</strong>? Наприм<strong>е</strong>р:<br />
I'm s t e a l i n g t h e c o n t e n t s ! S p a r k le , s p a r k le ! (Я краду д р агоц <strong>е</strong>н н ости ! К руто!)<br />
Но каж<strong>е</strong>тся, наш вор JewelThief повторя<strong>е</strong>т д<strong>е</strong>йствия сл<strong>е</strong>саря Locksmith! Как это могло произойти?<br />
Сравн<strong>е</strong>ни<strong>е</strong> скрытия ип<strong>е</strong>р<strong>е</strong>крытия м<strong>е</strong>тодов<br />
Причиной, по которой объ<strong>е</strong>кт J e w e l T h i e f при вызов<strong>е</strong> м<strong>е</strong>тода R e t u r n C o n t e n t s {) в<strong>е</strong>д<strong>е</strong>т с<strong>е</strong>бя как объ<strong>е</strong>кт<br />
L o c k s m it h , явля<strong>е</strong>тся способ, которым класс J e w e l T h i e f объявил этот м<strong>е</strong>тод. Подсказка находится<br />
в пр<strong>е</strong>дупр<strong>е</strong>жд<strong>е</strong>ниях, которы<strong>е</strong> посыла<strong>е</strong>т прилож<strong>е</strong>ни<strong>е</strong>:<br />
О О Errors ji ^ 1 Warning О Messages [<br />
Description<br />
A 1<br />
'iewel_Thief J«ive(Thtef.ReturnContentsCJewel_Thief.Jewets, Jewel_Thief.Owner)‘ hides inherited member<br />
'ieweLThief.Locksmith.ReturnContents(jewel_Thief,Jewels, Jewel_Thief.Owner)'. To make the current member<br />
override that implementation, add the override keyword. Othenwise add the new keyword.<br />
Так как класс J e w e l T h i e f насл<strong>е</strong>ду<strong>е</strong>т от класса L o c k s m i t h<br />
и по ид<strong>е</strong><strong>е</strong> зам<strong>е</strong>ща<strong>е</strong>т м<strong>е</strong>тод R e t u r n C o n t e n t s () своим собств<strong>е</strong>нным,<br />
каж<strong>е</strong>тся, что этот м<strong>е</strong>тод п<strong>е</strong>р<strong>е</strong>крыва<strong>е</strong>тся. Но на<br />
самом д<strong>е</strong>л<strong>е</strong> это н<strong>е</strong> так. Объ<strong>е</strong>кт J e w e l T h i e f скрыва<strong>е</strong>т м<strong>е</strong>тод<br />
R e t u r n C o n t e n t s ().<br />
При скрытии производный класс зам<strong>е</strong>ща<strong>е</strong>т (т<strong>е</strong>хнич<strong>е</strong>ски<br />
он «п<strong>е</strong>р<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>льно.<br />
Если имя и сигнатура создава<strong>е</strong>мого<br />
м<strong>е</strong>тода совпада<strong>е</strong>т<br />
с им<strong>е</strong>н<strong>е</strong>м и сигнатурой<br />
насл<strong>е</strong>ду<strong>е</strong>мых м<strong>е</strong>тодов, новый<br />
м<strong>е</strong>тод производного<br />
класса скрыва<strong>е</strong>т м<strong>е</strong>тод<br />
базового класса.<br />
262 глава 6