Skip to content

Kirish spetsifikatorlari (Access Specifiers)

Kirish spetsifikatorlari

Kirish spetsifikatorlari sinf a'zolariga (atributlar va metodlarga) qanday kirish mumkinligini boshqaradi.

Ular ma'lumotlarni himoya qilish va kodni tartibga solishga yordam beradi, shunda faqat kerakli qismlar ko'rinadi yoki o'zgartiriladi.


Kirish spetsifikatorlaridan foydalanish

public kalit so'zi — kirish spetsifikatoridir.

Quyidagi misolda a'zolar public — ya'ni ularni sinfdan tashqaridan ham kirish va o'zgartirish mumkin:

MISOL

cpp
class MyClass {  // Sinf
  public:        // Kirish spetsifikatori
    // sinf a'zolari shu yerda
};

Agar a'zolarni maxfiy va tashqi dunyodan yashirilgan qilmoqchi bo'lsak nima bo'ladi?

C++ da uchta kirish spetsifikatori mavjud:

  • public — a'zolarga sinfdan tashqaridan kirish mumkin
  • private — a'zolarga sinfdan tashqaridan kirish (yoki ko'rish) mumkin emas
  • protected — a'zolarga sinfdan tashqaridan kirish mumkin emas, lekin meros olingan sinflarda foydalanish mumkin

Private

private deb e'lon qilingan a'zolarga sinfdan tashqaridan kirish mumkin emas.

public va private a'zolar orasidagi farqni ko'rsatamiz:

XATO MISOL

cpp
class MyClass {
  public:    // Public kirish spetsifikatori
    int x;   // Public atribut
  private:   // Private kirish spetsifikatori
    int y;   // Private atribut
};

int main() {
  MyClass myObj;
  myObj.x = 25;  // Ruxsat berilgan (public)
  myObj.y = 50;  // Ruxsat berilMAgan (private)
  return 0;
}

Private a'zoga kirishga harakat qilsangiz, xatolik yuzaga keladi:

error: y is private

ESLATMA

Private sinf a'zolariga shu sinf ichidagi public metod orqali kirish mumkin. Bu haqda keyingi bob — Inkapsulyatsiya da o'rganasiz.

MASLAHAT

Sinf atributlarini iloji boricha private deb e'lon qilish yaxshi amaliyot hisoblanadi. Bu kodingizni buzish ehtimolini kamaytiradi. Bu Inkapsulyatsiya kontseptsiyasining asosiy tarkibiy qismidir.

Eslatma: Agar kirish spetsifikatori ko'rsatilmasa, sinfning barcha a'zolari standart holda private bo'ladi:

MISOL

cpp
class MyClass {
  int x;   // Private atribut
  int y;   // Private atribut
};

Protected

protected deb e'lon qilingan a'zolarga sinfdan tashqaridan kirish mumkin emas, lekin ular bolalar sinflarida (child classes) foydalanish mumkin.

Bu haqda Vorislik bobida batafsil o'rganasiz.


Hayotiy misol

  • Public: Uyingizning old eshigi kabi — hamma kirishi mumkin.
  • Private: Qulflangan tortma kabi — faqat egasi (yoki ishonchli do'stlar) ochishi mumkin.
  • Protected: Faqat oila uchun xona kabi — bolalar (kichik sinflar) kirishi mumkin, boshqalar esa yo'q.