. Стиллмен, Дж. Грин - Изучаем 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