C# для чайников
.pdfГлава 13
Полиморфизм
>Скрывать или перекрывать методы базового класса?
>Реально ли создание абстрактных классов?
>Объявление абстрактного метода
>Создание новой иерархии поверх существующей
>Защита класса от наследования
аследование позволяет одному классу "приспособить" члены другого класса.
Таким |
образом, |
можно создать класс S a v i n g s A c c o u n t , |
который наследует |
члены-данные |
и методы |
от базового класса B a n k A c c o u n t . Однако |
этого недостаточно |
для имитации объектов реального мира.
Вернитесь к главе 12, "Наследование", если вам требуется освежить свои зна ния о наследовании.
Микроволновая печь представляет собой определенный тип печи, но не из-за внешне го вида, а потому что она выполняет те же функции, что и любая печь. Она может вы полнять и ряд дополнительных функций, но как минимум она должна реализовать базо вую функцию печи — готовить закуски. При этом вас не должно беспокоить, что у нее внутри, кто ее сделал и как продавец сумел-таки всучить ее вашей жене по такой цене на
распродаже... Хотя нет, именно последнее наверняка беспокоит вас больше всего ... |
|
|
Для обычного потребителя отличия м и к р о в о л н о в о й печи от |
о б ы ч н о й не так |
важ |
ны— лишь бы они обе могли готовить л ю б и м ы е блюда, но |
если взглянуть на |
это |
сточки зрения печи, то эти отличия становятся крайне существенны, поскольку внут реннее устройство печей с о в е р ш е н н о различно . М о щ ь наследования заключается втом факте, что подкласс не обязан наследовать каждый метод базового класса в том виде, в котором он написан . Подкласс может наследовать суть метода базового класса при полном отличии его реализации .
Как описывалось в главе 7, " Ф у н к ц и и ф у н к ц и й " , две или большее число функций могут иметь одинаковые имена — л и ш ь бы отличались количества и/или типы их ар гументов.
// S a v i n g s A c c o u n t - б а н к о в с к и й с ч е т с н а ч и с л е н и е м // п р о ц е н т о в
p u b l i c c l a s s S a v i n g s A c c o u n t : B a n k A c c o u n t
{
p u b l i c d e c i m a l m l n t e r e s t R a t e ;
/ / S a v i n g s A c c o u n t - п р о ц е н т н а я с т а в к а п е р е д а е т с я к а к // ч и с л о от 0 до 10 0
p u b l i c S a v i n g s A c c o u n t ( d e c i m a l m l n i t i a l B a l a n c e , d e c i m a l m l n t e r e s t R a t e )
:b a s e ( m l n i t i a l B a l a n c e )
{
t h i s . m l n t e r e s t R a t e = m l n t e r e s t R a t e / 1 0 0 ;
/ / A c c u m u l a t e l n t e r e s t - н а ч и с л е н и е п р о ц е н т о в p u b l i c v o i d A c c u m u l a t e l n t e r e s t ( )
{
m B a l a n c e = B a l a n c e + ( B a l a n c e * m l n t e r e s t R a t e ) ;
/ / W i t h d r a w |
- |
с о с ч е т а |
м о ж н о с н я т ь любу ю |
с у м м у , |
н е |
|||
/ / превышающую |
б а л а н с ; |
ф у н к ц и я |
в о з в р а щ а е т |
с н я т у ю с у м м у |
||||
p u b l i c d e c i m a l W i t h d r a w ( d e c i m a l m W i t h d r a w a l ) |
|
|||||||
{ |
|
|
|
|
|
|
|
|
/ / Д о п о л н и т е л ь н о е с н я т и е 1 . 5 0 |
|
|
|
|||||
b a s e . W i t h d r a w ( 1 . 5 M ) ; |
|
|
|
|
||||
/ / Т е п е р ь с н и м а е м с о с ч е т а к а к о б ы ч н о |
|
|
||||||
r e t u r n b a s e . W i t h d r a w ( m W i t h d r a w a l ) ; |
|
|
||||||
p u b l i c |
c l a s s |
P r o g r a m |
|
|
|
|
||
{ |
|
|
|
|
|
|
|
|
p u b l i c |
s t a t i c v o i d M a k e A W i t h d r a w a l ( B a n k A c c o u n t |
b a , |
||||||
|
|
|
|
|
|
d e c i m a l m A m o u n t ) |
||
b a . W i t h d r a w ( m A m o u n t ) ; |
|
|
|
|
||||
} |
|
|
|
|
|
|
|
|
p u b l i c |
s t a t i c v o i d M a i n ( s t r i n g [ ] |
a r g s ) |
|
|
||||
{ |
|
|
|
|
|
|
|
|
B a n k A c c o u n t |
b a ; |
|
|
|
|
|||
S a v i n g s A c c o u n t s a ; |
|
|
|
|
||||
/ / С о з д а е м б а н к о в с к и й с ч е т , с н и м а е м 1 0 0 , в ы в о д и м |
||||||||
/ / р е з у л ь т а т |
|
|
|
|
|
|||
b a = n e w B a n k A c c o u n t ( 2 0 0 М ) ; |
|
|
|
|||||
b a . W i t h d r a w ( 1 0 0 M ) ; |
|
|
|
|
||||
/ / Д е л а е м т о ж е с д е п о з и т н ы м с ч е т о м |
|
|
||||||
s a |
= |
ne~w |
S a v i n g s A c c o u n t ( 2 0 0 М , |
1 2 ) ; |
|
|
||
s a . W i t h d r a w ( l O O M ) ; |
|
|
|
|
||||
(пава 13. Полиморфизм |
|
|
|
287 |