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

_ Часто<br />

ЧаДаБа<strong>е</strong>Мы<strong>е</strong><br />

В р<strong>е</strong>бус<strong>е</strong> в басс<strong>е</strong>йн<strong>е</strong> точка входа<br />

указывала наружу, означа<strong>е</strong>т ли это,<br />

что в программ<strong>е</strong> отсутству<strong>е</strong>т форма<br />

Forml?<br />

^ ; Для нового про<strong>е</strong>кта Windows<br />

Application, ИСР созда<strong>е</strong>т вс<strong>е</strong> н<strong>е</strong>обходимы<strong>е</strong><br />

файлы, включая файл Program.cs (сод<strong>е</strong>ржащий<br />

статич<strong>е</strong>ский класс с точкой входа),<br />

и файл Forml.CS (сод<strong>е</strong>ржащий пустую<br />

форму Forml).<br />

Попробуйт<strong>е</strong> при создании нового про<strong>е</strong>кта<br />

выбрать вариант Empty Project вм<strong>е</strong>сто<br />

Windows Application. Добавьт<strong>е</strong> файл<br />

с классами ч<strong>е</strong>р<strong>е</strong>з окно Solution Explorer<br />

и вв<strong>е</strong>дит<strong>е</strong> код из р<strong>е</strong>ш<strong>е</strong>ния р<strong>е</strong>буса в<br />

басс<strong>е</strong>йн<strong>е</strong>. Так как в программ<strong>е</strong> должно появляться<br />

окно диалога, н<strong>е</strong>обходимо добавить<br />

ссылку на форму. Щ<strong>е</strong>лкнит<strong>е</strong> правой<br />

кнопкой мыши на строчк<strong>е</strong> References в<br />

окн<strong>е</strong> Solution Explorer, выб<strong>е</strong>рит<strong>е</strong> команду<br />

Add Reference, в открывш<strong>е</strong>мся окн<strong>е</strong><br />

п<strong>е</strong>р<strong>е</strong>йдит<strong>е</strong> на вкладку .NET и выб<strong>е</strong>рит<strong>е</strong><br />

строчку System.Windows.Forms. Зат<strong>е</strong>м выб<strong>е</strong>рит<strong>е</strong><br />

команду Properties в м<strong>е</strong>ню Project<br />

и укажит<strong>е</strong> в списк<strong>е</strong> output type вариант<br />

Windows Application.<br />

Запустит<strong>е</strong> программу и посмотрит<strong>е</strong> на<br />

р<strong>е</strong>зультат! Поздравля<strong>е</strong>м, вы только что<br />

создали программу с нуля!<br />

Если бллл нужно вспомнить,<br />

цто тако<strong>е</strong> м<strong>е</strong>тод Maii^O<br />

и точка входа, п<strong>е</strong>р<strong>е</strong>читайт<strong>е</strong><br />

начало главы Z.<br />

Можно ли насл<strong>е</strong>довать от класса,<br />

сод<strong>е</strong>ржащ<strong>е</strong>го точку входа?<br />

^ ! Да. Точка входа должна быть<br />

статич<strong>е</strong>ским м<strong>е</strong>тодом, но этот м<strong>е</strong>тод<br />

мож<strong>е</strong>т и н<strong>е</strong> принадл<strong>е</strong>жать к статич<strong>е</strong>скому<br />

классу. (Ключ<strong>е</strong>во<strong>е</strong> слово s t a t i c<br />

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

класса, но <strong>е</strong>го м<strong>е</strong>тоды доступны с<br />

мом<strong>е</strong>нта запуска программы. В р<strong>е</strong>бус<strong>е</strong> в<br />

басс<strong>е</strong>йн<strong>е</strong> м<strong>е</strong>тод T e s t B o a t s . M ain {)<br />

можно вызвать из любого другого м<strong>е</strong>тода<br />

б<strong>е</strong>з объявл<strong>е</strong>ния ссылочной п<strong>е</strong>р<strong>е</strong>м<strong>е</strong>нной<br />

или создания экз<strong>е</strong>мпляров при помощи<br />

оп<strong>е</strong>ратора new.)<br />

у» я н<strong>е</strong> понимаю, поч<strong>е</strong>му эти м<strong>е</strong>тоды<br />

называют «виртуальными», они вполн<strong>е</strong><br />

р<strong>е</strong>альны<strong>е</strong>!<br />

Q ; Ключ<strong>е</strong>во<strong>е</strong> слово virtual относится<br />

к способам обработки м<strong>е</strong>тодов в .NET.<br />

Использу<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>крыты.<br />

1); Поч<strong>е</strong>му я могу двигаться по диаграмм<strong>е</strong><br />

классов только вв<strong>е</strong>рх?<br />

0 2 Классы, располож<strong>е</strong>нны<strong>е</strong> в диаграмм<strong>е</strong><br />

св<strong>е</strong>рху, являются бол<strong>е</strong><strong>е</strong> общими. Им<strong>е</strong>нно<br />

от них насл<strong>е</strong>дуют бол<strong>е</strong><strong>е</strong> д<strong>е</strong>тализированны<strong>е</strong><br />

классы (скаж<strong>е</strong>м Рубашка или<br />

Автомобиль могут насл<strong>е</strong>довать от<br />

классов Од<strong>е</strong>жда или Транспорт). Если<br />

вам нуж<strong>е</strong>н транспорт, вам подойд<strong>е</strong>т как<br />

автомобиль, так и мотоцикл или даж<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>дства.<br />

Им<strong>е</strong>нно так работа<strong>е</strong>т насл<strong>е</strong>довани<strong>е</strong>. При<br />

наличии м<strong>е</strong>тода с парам<strong>е</strong>тром Транспорт<br />

и при условии, что класс мотоцикл<br />

насл<strong>е</strong>ду<strong>е</strong>т от класса Транспорт,<br />

вы мож<strong>е</strong>т<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><br />

п<strong>е</strong>р<strong>е</strong>дать объ<strong>е</strong>кг Транспорт, так как это<br />

мож<strong>е</strong>т оказаться по<strong>е</strong>зд, и С# н<strong>е</strong> буд<strong>е</strong>т<br />

знать, что д<strong>е</strong>лать, при попытках м<strong>е</strong>тода<br />

получить доступ к свойству Руль.<br />

М<strong>е</strong>тодам, парам<strong>е</strong>тры<br />

которых работают<br />

<strong>е</strong> базовым<br />

классом, можно<br />

п<strong>е</strong>р<strong>е</strong>давать экз<strong>е</strong>мпляры<br />

производпо<br />

го класса.<br />

дальш<strong>е</strong> ► 259

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

Saved successfully!

Ooh no, something went wrong!