Добавил:
2200 7008 9480 6099 TKFF БЛАГОДАРНОСТЬ МОЖНО ТУТ ОСТАВИТЬ Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ДИПЛОМ 2025 / 4 курса_МТУСИ / 1 КУРС / Информатика / С# для чайников - Мюллер.pdf
Скачиваний:
0
Добавлен:
04.06.2025
Размер:
53.3 Mб
Скачать

Если бы С# не поддерживал позднее связыван ие, то вам бы пришлось ре­ дактировать метод someMethod ( ) , чтобы проверять в нем, является ли пере­ данный объект s переменной типа Student или GraduateStudent. Программа должна была бы вызывать Student . CalcTuition ( ) в случае, когда переменная s принадлежала бы классу Student, и GraduateStudent . CalcTuition ( ) для класса GraduateStudent.

Это было бы не так страшно, если бы не две проблемы.

> . Это только один метод. А теперь представьте, что CalcTuition ( ) вызывается в сотнях мест. . .

»Предположим, что CalcTuition ( ) - не единственное различие между двумя классами. Шансы, что вы найдете все места в програм­ ме, требующие изменений, резко снижаются. . .

При использовании полиморфизма вы просто позволяете С# самостоятель­ но решить, какой метод должен быть вызван.

Использование is для полиморфного доступа к скрытому методу

Каким образом сделать программу полиморфной? Один из подходов для решения этой задачи в С# состоит в использовании ключевого слова is (о кото­ ром (и его родственнике as) рассказывалось в главе 16, "Наследование"). Вы­ ражение Ьа is SavingsAccount возвращает значение true или false в зависи­ мости от класса объекта во время выполнения программы. Объявленный тип может быть BankAccount, но с какого типа объектом приходится иметь дело в реальности? В приведенном далее фрагменте исходного текста is использует­ ся для обращения к методу Withdraw ( ) класса SavingsAccount.

т

r:)

(rnш

,хр1

хшг

 

 

 

 

 

 

уt

т

:(

:(ш

 

;,р

"шm,w e:

3,хш

шy nгошимmw))р им : ,,(fОгшr шгр им C

 

 

 

 

 

 

: -

,' ш ;

:

1w()р

им ,

 

 

 

 

 

 

уt

6ш им: 1

w))р им

шe

n 6ш

: 1 w()р

, ' ш V

 

 

 

 

 

 

 

 

"шe;

 

3,хш ,шгр

имC W

 

 

 

 

 

,r

,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ГЛАВА 1 7 ре Кс теипсвт,

387

НО'ННЕЕМЗВЕО!ИВ ПССО!ИМВВ ПСКОПО!ИОЗ ЗВНОПОЗ

" " " "

K

K

""

K

ТЕХНИЧЕСКИЕ

 

 

 

 

ЗАЗДИЗСКЗРТ

 

 

 

 

\ВОВ ЗСОЗОЗКИНЗВОПЗВНИКИНИВЗKСНО'ННЕЕНТi ИНСМЗНИИСТОССВИСЕМ ННКП ННЗОВКИМПНЕМПОВОНСИИИИНПМ!KВППО!МВВВИПЗВНЗО!ВТИг КИИЕИЕ!ИОd ОВKПС

ЕО!ИВИ МЗСО!ВКОПНВВВОВ.

СО!ТО! ОИСНМПО!МВП ЕИИИИЕ!ОЗОКИМВНИЕОЕЕМЗТО!

ИОЕЕ ВИПЗВЕiЗООВПИВЗВПИИИОb П ЗО!ВТИЕЕ

!МКИИЗВПЕ ОТМЗОПП СНО'ННЕЕИd

О!ТО! З МЗСО!ВКОПНИМИЕИП ПСО!ИИ ННЗОВОЗСОЗОЗИИО.ВО С!ОТНK М!ИKd НМЕИИИИМИИПВНИЗЕИВОВЕИВО!Н СИe!Е\И НИЕЗИЕТИЗ ДОЗПИ!ОЕ!ИИИОЗВМОПЗИТ ПОКЕО!ИСТ ВМСНТЗКИИВОППОВОНСИМЕИРВЗK ЕО'ЕВ СОKПМВВЗKП !Н!ВИИЗm ТИЕ!1 П ЗНИПИ \ВО ИНП!Н! СПНИВИНЕИВО! СИeОЕ\Е!НИЕЗИЕТИ З 'ЗТМТПОЕХ! ЗО!Вe

ТЕР ОВПИВЗВПИИИОЗВВТЕХFSТSЗИЗКИНЗi ПНТИСНМ!О!ИИМИОЗТО!МВЗK!ПЕЕK П!НЗЗНЕМ ИО КНПВННОВ ПНЗЕО'ЕВ СОВНИЗОПНВВНИН!МКОПНВВИОПСЗ ПМ! ЗКИИВНИНСНМЕИН. КИОЗАeНСЕЗАЗАМИ!ННМПС ЗЕ!ИВИ ПСИЕ!!ИИС СИНИНСВВПЗР СНО'ННЕЕЕ П СОМЗПНТ ЕИЗВi П ПОВОНСИИН!О ПИИЗВМ!ОЗНП!ИИМKiЗПKКНИСИ З СНОПИНПОЗВМСННН'ЕЕИИ ВНЕИВО!Н П СНОСИЗЗИПССО!ИИИМKСНО'ННЕЕС.

Объявление метода виртуальным и перекрытие

(. (-a!,

-#a!.(

P#V!1 э)6L --#ankA#F

0-0

 

.!)#>)!

)#

F!a# .(

20

.#.(a3

#Д!

!--#.!-.#))0-

!2!

--#F -!2-!6)0F

a(.(F

->#a!-

!a#.!-3

20

.!,1>

(a3

ga!

.,!Д,(-- (-a1

(-.!.3217e#-1

 

-#a!. P# V!1эomp,L --#ankA#F20ai#d2(-a(-(a3

lМa

-(-!-a!уa#.3)!

.,()(-(a3

,#ch#)(#

!

a!-я.(.!3

-#a!.

.!.6#)

 

20a3 -02-()

!-)!-0-(у-3

)(

()

!,-(c((

!

a(.#

!2З#.a(

-,#-#)( -0.!.)#)(у

 

.,!Д,(-- 0i

!6)! 2(-a(-(a3

lМa -(-!-a!уa#.3)!

 

.,()(-(a3

,#ch#)(#

!

-#,-((

э) сL-rn#ankA20.!a!,17

-.#.1#a

 

-02-(a3

 

с.1

ga!Д! )#!2F!.(-!

.!-#a(a3

-#a!.

2(2!-!Д! ..(--(

.,(

.!-!e(

..7>#-!Д!

 

-.!-(

 

homp-,.#FT( .(6.17

 

-#,-(7

-#a!

.( - .!...(--(F

 

..7>#-0-

 

-.!-!-

(h! --)- !a

 

 

 

 

 

 

 

l.#.17e(3

 

.,(-#, !-)!-()

 

)(

.!.(-!, (2-#i

th)#- - -#a!.0 э) ,L--#ankA20

.!2(-.#)0

()-a,1.c((

-0-!.(

 

>a!20

 

.!.(2(a3

>a! .#3- a-(a#.3)!

 

-020-(7ai

-у .,(-(.3)0#

 

-#

!.0 th!a .!.

.,!Д,(--0

th(F (-1 Lomp4L!-),#(4!в

 

 

 

ЧАСТЬ 2

T

y,W ##

#),,#A, )#. ,# ##,

C)#г),..,)

#.,#,,

 

С#

 

=

G

e

=

=

( *E

==TSG==T =HT ==T

=

=п= (n+=() + =

Соседние файлы в папке Информатика