C++ за 21 день седьмое издание



Download 1,38 Mb.
bet189/437
Sana22.02.2022
Hajmi1,38 Mb.
#89455
TuriРеферат
1   ...   185   186   187   188   189   190   191   192   ...   437
Bog'liq
word1

#include




  1. using namespace std;








  1. c la ss Mammal




  1. {




  1. pub lic:




  1. void FeedBabyMilk()

272 ЗАНЯТИЕ 10. Реализация наследования



  1. {




  1. cout « "Mammal: Baby says glug!" « endl;




  1. }



10: };
1 1 :



  1. class Reptile




  1. {




  1. public:




  1. void SpitVenomO




  1. {




  1. cout « "Reptile: Shoo enemy! Spits venom!" « endl;




  1. }




  1. };

2 0 :

  1. class Bird



22: {

  1. public:




  1. void LayEggsO




  1. {




  1. cout « "Bird: Laid my eggs, am lighter now!" « endl;




  1. }




  1. };



29:



  1. class Platypus: public Mammal, public Bird, public Reptile




  1. {




  1. public:




  1. void Swim()




  1. {




  1. cout « "Platypus: Voila, I can swim!" « endl;




  1. }




  1. };



38:



  1. int main()




  1. {




  1. Platypus_realFreak;_____realFreak.LayEggs();'>Platypus realFreak;




  1. realFreak.LayEggs();




  1. realFreak.FeedBabyMilk();




  1. realFreak.SpitVenom();




  1. realFreak.Swim();



46:



  1. return 0;




  1. }



Результат


Bird: Laid my eggs, am lighter now!


Mammal: Baby says glug!


Резюме_273___Анализ'>Reptile: Shoo enemy! Spits venom!


Platypus: Voila, I can swim!
Резюме 273


Анализ

Определение средств класса P la t y p u s действительно компактно (строки 30 -37). По


.-уществу, он просто наследует их от трех классов: Mam m al, R e p t i l e и B ir d . Функция





  1. a in () в строках 41-44 способна обратиться к трем индивидуальным характеристикам разовых классов, используя объект r e a lF r e a k производного класса P la t y p u s . Кроме зызова функций, унаследованных от классов Mammal, B i r d и R e p t il e , функция m a in () з строке 45 вызывает метод P la t y p u s :: Swim ( ) . Эта программа демонстрирует синтаксис чножественного наследования, а также то, как производный класс предоставляет все от­ крытые члены (в данном случае методы) многих своих базовых классов.

Утконос может плавать, но это не рыба. Следовательно, в листинге 10.10 мы не наследовали класс Platypus также от класса Fish только для удобства использования существующего метода Fish: :Swim(). Принимая решения в проекте, не забывайте, что открытое наследование должно также отражать от­ ношения и не должно использоваться без разбора, лишь для решения опреде­ ленных задач, связанных с многократным использованием. Этого можно до­ стичь и по-другому.



РЕКОМЕНДУЕТСЯ


Создавайте открытую иерархию наследования для установки отношений есть


Создавайте закрытую или защищенную иерар­ хию наследования для установки отношений
содержит


Помните, открытое наследование означает, что у классов, производных от производного класса, есть доступ к открытым и защищенным членам базового класса


Помните, закрытое наследование означает, чтодаже классы, производные от производного класса, не имеют доступа к базовому классу


Помните, защищенное наследование означа­ ет, что у классов, производных от производного класса, есть доступ к защищенным и открытым методам базового класса


Помните, что, независимо от характера наслед­ ственных отношений, закрытые члены в базо­ вом классе недоступны никаким производным классам


Резюме
НЕ РЕКОМЕНДУЕТСЯ


Не создавайте иерархию наследования толь­ ко для многократного использования обычных функций


Не используйте закрытое и открытое наследо­ вание без разбора, поскольку впоследствии это может стать узким местом архитектуры ва­ шего приложения


Не создавайте функции производного класса (с тем же именем, но другим набором входных параметров), которые непреднамеренно скры­ вают таковые в базовом классе

На сегодняшнем занятии рассматривались основы наследования в языке C++. Вы узна­ ли, что открытое наследование — это отношения ест ь между производным и базовым



274 ЗАНЯТИЕ 10. Реализация наследования

классами, а закрытое и защищенное наследование создает отношения имеет. Вы видели, что применение модификатора доступа p r o t e c t e d предоставляет члены базового класса только к производному, оставляя их скрытыми от классов вне иерархии наследования. Вы узнали, что защищенное наследование отличается от закрытого тем, что производные классы производного класса могут обращаться к открытым и защищенным членам базо­ вого класса, что невозможно при закрытом наследовании. Вы изучили основы переопреде­ ления методов и их сокрытия, а также узнали, как избежать нежелательного сокрытия метода с использованием ключевого слова u s in g .


Теперь вы готовы ответить на несколько вопросов, а затем перейти к изучению сле­ дующего столпа объектно-ориентированного программирования — полиморфизму.





Download 1,38 Mb.

Do'stlaringiz bilan baham:
1   ...   185   186   187   188   189   190   191   192   ...   437




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