Himoyalangan kirish spetsifikatsiyasidan qachon foydalanish kerak?
Ajdod sinfning protected a'zolaridan avlod sinfining a'zolari foydalanishi mumkin, ya'ni agar siz keyinchalik protected a'zoda biror narsani o'zgartirsangiz (ma'lumotlar turi, qiymati va boshqalar), u holda ajdodagi kabi o'zgartirishlar kiritishingiz kerak va barcha avlod sinflarida. Shuning uchun, himoyalangan kirish spetsifikatorlaridan foydalanish faqat o'z sinflaringizni meros qilib olganingizda va avlod sinflari soni kichik bo'lganda foydali bo'ladi. Shunday qilib, agar siz ajdodlar sinfini amalga oshirishga o'zgartirishlar kiritsangiz va barcha avlod sinflarini yangilashingiz kerak bo'lsa, unda siz ushbu yangilanishlarni o'zingiz qilishingiz mumkin va bu ko'p vaqt talab qilmaydi (chunki avlod sinflari kam bo'ladi).
A'zolarni private qilish yaxshiroq inkapsulyatsiyani ta'minlaydi va ajdod sinflarini avlod sinflari tufayli yuzaga keladigan o'zgarishlardan izolyatsiya qiladi. Ammo buning narxi public yoki protected qo'shimcha yaratishdir (boshqa obyektlarning sinflar va ularning a'zolari, ya'ni oluvchilar va sozlashchilar bilan o'zaro ta'sir qilish usuli). Bu qo'shimcha ish, agar siz o'z sinflaringiz bilan ishlasangiz (tashqi sinflar sizning sinfingizga taalluqli emas) va avlod sinflari soni kam bo'lsa, bunga loyiq emas.
Meros turlari. A'zolarga kirish. Sinf merosining uch turi mavjud:
1) public;
2) private;
3) protected.
Meros turini aniqlash uchun meros qilib olingan sinf yonida kerakli kalit so'zni ko'rsatish kifoya:
// Ochiq meros olish
class Pub: public Parent
{
};
// yopiq meros olish
class Pri: private Parent
{
};
// Himoyalangan meros olish
class Pro: protected Parent
{
};
class Def: Parent // Jimlik bo'yicha C++ yopiq merosni ta'minlaydi
{
};
Agar siz meros turini o'zingiz belgilamagan bo'lsangiz, C++ da standart meros turi private bo'ladi (xuddi shunday sinf a'zolari uchun, agar boshqacha ko'rsatilmagan bo'lsa).
Bu bizga 9 ta kombinatsiyani beradi: 3 ta kirish spetsifikatsiyasi (public, private va protected) va 3 ta meros turi (public, private va protected).
Xo'sh, ikkalasi o'rtasidagi farq nima? Muxtasar qilib aytganda, meros olishda ajdod a'zosining kirish spetsifikatsiyasi avlod sinfida (meros turiga qarab) o'zgartirilishi mumkin. Boshqacha qilib aytganda, ajdod sinfida public yoki protected a'zolar avlod sinfida private bo'lishi mumkin.
Bu biroz chalkash tuyulishi mumkin, ammo bu unchalik yomon emas. Biz buni hozir aniqlaymiz, ammo undan oldin quyidagi qoidalarni eslang:
Sinf har doim o'zining (meroslanmagan) a'zolariga kirish huquqiga ega.
Sinf a'zosiga kirish uning kirish spetsifikatsiyasiga asoslanadi.
Avlod sinfi ajdod-sinfdagi ushbu a'zolarning kirish spetsifikatsiyasi asosida ajdod-sinfning meros qilib olingan a'zolariga kirish huquqiga ega.
Do'stlaringiz bilan baham: |