Darsliklar C++ Merosxurlik (Sinf/Class)

C++ C++ Merosxurlik (Sinf/Class)

Merosxo’rlik (inheritance) — OOP ning ikkinchi ustuni. U bir sinfga boshqa sinfning barcha xususiyatlarini “meros qilib olish” imkonini beradi. Bu kod takrorlanishini keskin kamaytiradi va sinflarni mantiqiy iyerarxiyaga soladi. Masalan, “Talaba” va “O’qituvchi” — ikkovi ham “Inson”, demak umumiy xususiyatlarni “Inson”dan meros oladi.

Merosxo’rlikbir sinf (bola/hosila) boshqa sinf (ota/asosiy) ning maydon va metodlarini o’zlashtirishi. Bola sinf otaning hamma imkoniyatini oladi, ustiga o’zinikini qo’shadi.

Asosiy va bola sinf

C++’da meros class Bola : public Ota shaklida yoziladi. Umumiy Inson sinfi va undan meros oluvchi Talaba ni ko’ramiz:

#include <iostream>
#include <string>
using namespace std;

class Inson {
public:
    string ism;
    void tanishtir() {
        cout << "Men " << ism << endl;
    }
};

class Talaba : public Inson {
public:
    int ball;
};

int main() {
    Talaba t;
    t.ism = "Master Sherkulov";   // Inson dan meros
    t.ball = 95;                   // o'ziniki
    t.tanishtir();                 // Inson metodini ishlatadi
    cout << "Ball: " << t.ball << endl;
    return 0;
}
Men Master Sherkulov
Ball: 95

Talaba sinfi ism maydonini va tanishtir() metodini Inson dan meros oldi, ustiga o’zining ball maydonini qo’shdi. Bir marta yozilgan kod qayta ishlatildi.

Meros turlari

C++’da meros kirish darajasi bilan boshqariladi. Uch turini jadvalda ko’ramiz:

Tur Otaning public a’zolari bolada Eng ko’p ishlatiladi
public public bo’lib qoladi Ha
protected protected bo’ladi kam
private private bo’ladi kam

Amaliyotda deyarli har doim public meros ishlatiladi — u “bola — bu otaning bir turi” munosabatini ifodalaydi.

Metodni qayta yozish (override)

Bola sinf ota sinfdan meros olgan metodni o’ziga moslab qayta yozishi mumkin:

#include <iostream>
using namespace std;

class Inson {
public:
    void rol() {
        cout << "Oddiy inson" << endl;
    }
};

class Oqituvchi : public Inson {
public:
    void rol() {                     // qayta yozildi
        cout << "O'qituvchi" << endl;
    }
};

int main() {
    Inson i;
    Oqituvchi o;
    i.rol();
    o.rol();
    return 0;
}
Oddiy inson
O'qituvchi

Bir xil nomli rol metodi ikki sinfda turlicha ishladi. Bola sinf otadan olingan metodni o’z ehtiyojiga moslab o’zgartirdi.

protected kirish darajasi

Meros bilan bog’liq maxsus daraja — protected. U private kabi tashqaridan yashirin, ammo private dan farqli o’laroq, bola sinflarga ko’rinadi:

#include <iostream>
using namespace std;

class Ota {
protected:
    int qiymat = 100;   // bolaga ko'rinadi, tashqariga yo'q
};

class Bola : public Ota {
public:
    int olish() {
        return qiymat;   // protected — bola ko'ra oladi
    }
};

int main() {
    Bola b;
    cout << b.olish() << endl;
    return 0;
}
100

protected — meros iyerarxiyasi ichida ma’lumot ulashishning to’g’ri usuli.

Xulosa

Bu bo’limda merosxo’rlikni, asosiy va bola sinf munosabatini, public merosni, metodni override qilishni va protected kirish darajasini ko’rib chiqdik. Meros kodni qayta ishlatishni yangi darajaga olib chiqadi. Keyingi darsda polimorfizm — merosning eng kuchli davomiga o’tamiz.