Voris sinf quyidagi ko’rinishlarda, ya’ni murojaat turlari bilan farqlangan holda olinishi mumkin. Bular: public, protected va private vorislik ko’rinishlaridir :
// public (umumiy) vorislik class derived1: public Base{…}; // private (xususiy) vorislik class derived2: private Base{….}; // protected (himoyalangan) vorislik class derived3: protected Base{….}; // default (oddiy-xususiy) vorislik class derived4: Base{….}; Public vorislik:
Bunda asos sinfning public a’zolari voris sinfning ham public a’zolari va asos sinfning protected a’zolari voris sinfning protected a’zolariga aylanadi.
Lekin asos sinfning private a’zolari voris sinf uchun yopiqligicha qoladi.
Protected vorislik:
Bunda asos sinfning public va protected a’zolari voris sinf uchun protected a’zo bo’lib o’tadi.
Private vorislik:
Bunda asos sinfning public va protected a’zolari voris sinfning private a’zosiga ayanadi.
Bir nechta sinflardan voris olish :
Bir vaqtning o’zida bir nechta sinfdan voris olish mumkin.
Masalan, voris sinf derived ikkita base1 va base2 lardan voris olyapti.
Quyidagicha formada bir nechta sinfdan voris olish mumkin:
class derived : public base-class1, public base-class2, …
Polimorfizm –bu kodning, bajarilish paytidan yuzaga keladigan holatga bog‘liq ravishda o‘zini turlicha amal qilish xususiyatidir. Polimorfizm – bu faqat ob’ektlar xususiyati bo‘lmasdan, balki funksiyalar-a’zolar xususiyatidir va ular xususan, bitta nomdagi funksiya-a’zoni, har xil turdagi argumentlarga ega va bajaradigan amali unga uzatiladigan argumentlar turiga bog‘liq bo‘lgan funksiyalar uchun (o‘rnida) foydalanish imkoniyatida namoyon bo‘ladi.
Bu holatga funksiyalarni qayta yuklash deyiladi. Polimorfizm amallarga ham qo‘llanishi mumkin, ya’ni amal mazmuni (natijasi) operand (berilgan) turiga bog‘liq bo‘ladi. Polimorfizmning bunday turiga amallarni qayta yuklash deyiladi.
Polimorfizm yana bir ta’rifi quyidagicha: polimorfizm – bu tayanch sinfga ko‘rsatkichlarning (murojaatlarning) virtual funksiyalarni chaqirishdagi turli shakl (qiymatlarni) qabul qilish imkoniyatidir.
C++ tilining bunday imkoniyati kechiktirilgan bog‘lanish natijasidir. Kechiktirilgan bog‘lanishda chaqiriladigan funksiya-a’zolar adreslari programma bajarilishi jarayonida dinamik ravishda aniqlanadi.
An’anaviy programmalash tillarida esa bu adreslar statik bo‘lib, ular kompilyasiya paytida aniqlanadi (oldindan bog‘lanish).
Kechiktirilgan bog‘lanish faqat virtual funksiyalar uchun o‘rinli.
Polimorfizm – bu bitta interfeys, bir nechta metod. Ya’ni metodlarni overload yoki override ko’rinishidir. Polimorfizm ikki xil ko’rinishda namoyon bo’ladi
compile time;
run time;
Compile time polimorfizm bu funksiyalar va operatorlar overloadi, ya’ni funksiyalar va operatorlarning qo’shimcha yuklanishidir (function overloading or operator overloading).
Runtime polimorfizm bu – vorislik va virtual funksiyalardan foydalanishda vujudga keladi (Function overriding).