Net framework 5, а также среды Visual Studio 2012 и C#


Компоненты,.полиморфизм.и.версии ПриМеЧание



Download 6,27 Mb.
Pdf ko'rish
bet150/658
Sana12.06.2023
Hajmi6,27 Mb.
#950840
1   ...   146   147   148   149   150   151   152   153   ...   658
Bog'liq
CLR via C Programmirovanie na platforme Microsoft NET Framework 4 5 na yazyke C

209
Компоненты,.полиморфизм.и.версии
ПриМеЧание
Если.бы.компилятор.по.умолчанию.считал.методы.переопределениями.(как.С++),.
разработчики.типа.BetterPhone.не.смогли.бы.использовать.в.нем.имена.методов.Dial.
и.EstablishConnection .Вероятно,.при.изменении.имен.этих.методов.негативный.эф-
фект.затронет.всю.кодовую.базу,.нарушая.совместимость.на.уровне.исходного.текста.
и.двоичного.кода .Обычно.такого.рода.изменения.с.далеко.идущими.последствиями.
нежелательны,.особенно.в.средних.и.крупных.проектах .Однако.если.изменение.имени.
метода.коснется.лишь.необходимости.обновления.исходного.текста,.следует.пойти.
на.это,.чтобы.одинаковые.имена.методов.Dial.и.EstablishConnection,.обладающие.
разной.семантикой.в.разных.типах,.не.вводили.в.заблуждение.других.разработчиков 
Альтернативное решение: 
CompanyB
, получив от 
CompanyА
новую версию типа 
Phone
, решает, что текущая семантика методов 
Dial
и 
EstablishConnection
типа 
Phone
— это именно то, что нужно. В этом случае в 
CompanyB
полностью удаляют 
метод 
Dial
из типа 
BetterPhone
. Поскольку теперь разработчикам 
CompanyB
нужно 
указать компилятору, что метод 
EstablishConnection
типа 
BetterPhone
связан 
с одноименным методом типа 
Phone
, нужно удалить из его определения ключевое 
слово 
new
. Удаления ключевого слова недостаточно, так как компилятор не поймет 
предназначения метода 
EstablishConnection
типа 
BetterPhone
. Чтобы выразить 
намерения явно, разработчик из 
CompanyB
должен изменить модификатор опреде-
ленного в типе 
BetterPhone
метода 
EstablishConnection
с 
virtual
на 
override

Код новой версии 
BetterPhone
выглядит так:
namespace CompanyB {
public class BetterPhone : CompanyA.Phone {
// Метод Dial удален (так как он наследуется от базового типа)
// Здесь ключевое слово new удалено, а модификатор virtual заменен
// на override, чтобы указать, что этот метод связан с методом
// EstablishConnection из базового типа
protected override void EstablishConnection() {
Console.WriteLine("BetterPhone.EstablishConnection");
// Выполнить действия по установлению соединения
}
}
}
Теперь то же приложение (метод 
Main
) выводит следующий результат:
Phone.Dial
BetterPhone.EstablishConnection
Видно, что когда 
Main
вызывает метод 
Dial
, вызывается версия этого метода, 
определенная в типе 
Phone
и унаследованная от него типом 
BetterPhone
. Далее, 
когда метод 
Dial
, определенный в типе 
Phone
, вызывает виртуальный метод 
EstablishConnection
, вызывается одноименный метод типа 
BetterPhone
, так 
как он переопределяет виртуальный метод 
EstablishConnection
, определяемый 
типом 
Phone
.



Download 6,27 Mb.

Do'stlaringiz bilan baham:
1   ...   146   147   148   149   150   151   152   153   ...   658




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish