Polimorfizm, undan foydalanish mexanizmlari



Download 1,29 Mb.
bet6/9
Sana20.05.2022
Hajmi1,29 Mb.
#605202
1   2   3   4   5   6   7   8   9
Bog'liq
9-ma\'ruza. Polimorfizm

Animal.speak() ni qayta ishlashda kompilyator Animal::speak() virtual funksiya ekanligini ko’radi. Animal Cat obyektining Animal qismiga murojaat qilganda, kompilyator eng katta avlod speak() metodini topish uchun Animal va Cat o’rtasidagi barcha sinflardan o’tadi va u Cat::speak() ni topadi. Animal Dog obyektining Animal qismiga murojaat qilganda, kompilyator Dog::speak() ni topadi.
E’tibor bering, biz Animal::getName() ni virtual funksiyaga aylantirmaganmiz. Buning sababi, getName () hech qachon avlod sinflarida qayta aniqlanmaydi, shuning uchun bu shart emas.
Xuddi shunday hayvonlar massivi bilan quyidagi misolda:
int main()
{
Cat matros(”Matros”), ivan(”Ivan”), martun(”Martun”);
Dog barsik(”Barsik”), tolik(MTolikM), tyzik(MTyzikM);
Animal *animals[] = { &matros, &barsik, &ivan, &tolik, &martun, &tyzik};
for (int iii=0; iii < 6; ++iii)
std::cout << animals[iii]->getName() << ” says ” << animals[iii]->speak() << '\n';
}
Natija:
Matros Miyav deydi Barsik Vuf deydi Ivan Miyav deydi “Vuf’ deydi Tolik Martun Miyav deydi Tyzik, deydi Vuf
Garchi bu ikkita misolda faqat Cat va Dog sinflari ishlatilsa ham, boshqa avlod sinflari ham bizning report () funksiyamiz va hayvonlar massivi bilan qo’shimcha o’zgartirishlarsiz ishlaydi! Bu, ehtimol, virtual funktsiyalarning eng katta afzalligi - kodingizni dasturchi tomonidan o’zgartirishlar talab qilmasdan, yangi avlod sinflari avtomatik ravishda eski kod bilan ishlaydigan tarzda tuzilish qobiliyatidir!
Ogohlantirish: Avlod sinfining virtual metodi sarlavhasi ajdod-sinfning virtual metodi sarlavhasiga to’liq mos kelishi kerak. Agar avlod metodi ajdoddan boshqa turdagi parametrlarga ega bo’lsa, bu metod chaqirilmaydi.
Virtual kalit so’zdan foydalanish. Agar funktsiya virtual deb belgilangan bo’lsa, ularning yonida virtual kalit so’zi aniq ko’rsatilmagan bo’lsa ham, barcha mos keladigan
qayta aniqlanishlar ham virtual hisoblanadi. Biroq, avlod sinflari metodlari yonida virtual kalit so’zning mavjudligi bu metodlar oddiy emas, balki virtual ekanligini foydali eslatma bo’lib xizmat qiladi. Shuning uchun, agar bu juda zarur bo’lmasa ham, virtual kalit so’zni avlod sinflarida bekor qilish yoniga qo’shish foydalidir.

Download 1,29 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9




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