protected kirish spetsifikatori. Biz allaqachon sinf a'zolariga kim kirishi mumkinligini belgilaydigan private va public kirish spetsifikatorlarini ko'rib chiqdik. Eslatib oʻtamiz, public aʼzolari hamma uchun ochiq, private aʼzolarga faqat private aʼzo bilan bir xil sinf aʼzolari kirishlari mumkin. Bu shuni anglatadiki, avlod sinflari ajdod sinfining shaxsiy a'zolariga bevosita kira olmaydi!
class Parent
{
private:
int m_private;
public:
int m_public;
};
Izoh: public = “ochiq”, private = “xususiy”, protected = “himoyalangan”
C ++ da biz hali gapirmagan uchinchi kirish spetsifikatsiyasi mavjud, chunki u faqat meros kontekstida foydalidir. protected kirish spetsifikatori sinf a'zolariga do'stona va avlod sinflariga kirish imkonini beradi. Sinf tanasidan tashqarida protected a'zoga kirish yopiq.
class Parent
{
public:
int m_public;
private:
int m_private;
protected:
int m_protected;
};
class Child: public Parent
{
public:
Child()
{
m_public = 1;
m_private = 2; //Bu xato
m_protected = 3;
}
};
int main()
{
Parent parent;
parent.m_public = 1; // Bu mumkin
// parent.m_private = 2; //Bu mumkin emas
parent.m_protected = 3; // Bu mumkin emas
}
Yuqoridagi misolda siz Parent sinfining m_protected a'zosi Child avlod sinfiga to'g'ridan-to'g'ri kirishi mumkinligini, lekin unga tashqi a'zolar kirishi mumkin emasligini ko'rishingiz mumkin.
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.
Do'stlaringiz bilan baham: |