C# dasturlash tilida sinflar ierarxiyasini tashkil etish


  Sinf osti va sinf usti munosabatlari


Download 1.16 Mb.
Pdf ko'rish
bet30/35
Sana05.01.2022
Hajmi1.16 Mb.
#213141
1   ...   27   28   29   30   31   32   33   34   35
Bog'liq
c dasturlash tilida sinflar ierarxiyasini tashkil etish

                             2.2.  Sinf osti va sinf usti munosabatlari 

                                          Super sinf va sinf osti 

Sinf  osti  tipidagi  ob’ektga  ko’rsatkichni  supersinf  tipidagi  o’zgaruvchiga  qiymat 

qilib  uzatish  mumkin,  lekin  teskarisi  o’rinli  emas.  Ya’ni  har  qanday  ishchi 

menedjer bo’la olmaydi 

Kengaytirilishi mumkin bo’lmagan sinf “terminal” sinf deb ataladi. Buning uchun 

sinfga “final” modifikatori qo’yiladi. 

Alohida  olingan  metod  ham  “final”  bo’lishi  mumkin.  bunday  metod  sinf  ostida 

qayta aniqlanishi mumkin emas.  

Agar sinf “final” bo’lsa uning maydonlari final bo’lishi shart emas. Buning uchun 

har bir maydon “final” bo’lishi lozim. 

Terminal sinf xusuiyatlari: 

effektivlik  (“Inline”)  metodlar  uchun  statik  bog’lanish  ishlaydi,  ya’ni  metod 

chaqirilganda uning kodi qanday bo’lishini kompilyator biladi 

xavfsizlik.  

Agar  supersinf tipidagi o’zgaruvchi sinf osti  ob’ektiga ko’rsatsa  bu  ko’rsatkichni 

sinf osti sinfi ob’ektiga ko’rsatkich qilib o’zgartirish (keltirish) mumkin.    

                         Obyekt o’zgaruvchilari tiplarini keltirish(casting) 

Keltirish faqat sinf ierarxiyasi ichida (tepadan pastga qarab) bajarilishi mumkin 

Agar o’zgaruvchi sinf osti ob’ektiga ko’rsatmasa uni sinf ostiga keltirish mumkin 

emas (favqulotda hodisa ro’y beradi) 




60 

 

Keltirish quyidagicha amalga oshiriladi  



if (B instanceof A) { 

  A boss = (A) B;} 

Ob’ekt  o’zgaruvchilari  ustida  keltirish  operatsiyasini  iloji  bo’lsa  ishlatmaslik 

kerak. Ob’ektlilik buziladi 

Uchburchak sinfiga misol: 

using


 System; 

using


 System.Text; 

namespace

 sinf1 

    



public

 

class



 

uchburchak

 { 

         



int

 a; 


         

int


 b; 

         

int

 c; 


    

public


 uchburchak(

int


 x, 

int


 y, 

int


 z) 

           { a = x; b = y; c = z; } 

        

     


public

 

int



 perimetr() { 

return


 a + b + c; } 

     


public

 

int



 getA() { 

return


 a; } 

     


public

 

int



 getB() { 

return


 b; } 

     


public

 

void



 setA(

int


 x) { a = x; } 

    } 


     

public


  

class


 

tuchburchak

:

uchburchak



 { 

        


//public tuchburchak(int x, int y, int z) 

        { a = x; b = y; c = z; }

 

     


public

 tuchburchak(

int

 x, 


int

 y, 


int

 z): 


base

(x,y,z) {} 

     

public


 

double


 yuza() {

return


 getA()*getB()/2.0; } 

    } 


    

class


 

Program


 


61 

 

    { 



        

static


 

void


 Main(

string


[] args) 

        { 

            

uchburchak

 U = 

new


 

uchburchak

(3, 4,5); 

            

tuchburchak

 T=


new

 

tuchburchak



(3,4,5); 

            

int

 x = U.perimetr(); 



            

Console


.WriteLine(x); 

 

            



//Console.WriteLine(U.getA());

 

           



// U.setA(7);

 

            



//Console.WriteLine(U.getA());

 

            



Console

.WriteLine(T.yuza()); 

            

Console


.ReadKey(); 

        } 

    } 



                                        Sinf osti 



[] class  :  { 

  

Supersinf barcha maydonlari va metodlari meros qilib sinf ostiga beriladi. Sinf osti 

qo’shimcha  maydon  va  metodlar  yasashi  va  meros  qilib  olingan  metodni  qayta 

aniqlashi mumkin. 

Agar  sinf  osti  metodi  qayta  aniqlangan  supersinf  metodi  bo’lsa,  supersinfning 

metodiga “super” old qo’shimcha orqali murojaat qilinadi 

Supersinf konstruktoriga super(…) ko’rinishida murojaat qilinadi 

Agar  sinf  osti  konstruktoridan  supersinf  konstruktoriga  murojaat  qilinmasa 

supersinfning  parametirsiz  konstruktori  chaqiriladi.  Agar  parametrsiz  konstruktor 

aniqlanmagan bo’lsa kompilyator xato haqida xabar beradi 

(odam, ishchi,talaba misolida) 




62 

 


Download 1.16 Mb.

Do'stlaringiz bilan baham:
1   ...   27   28   29   30   31   32   33   34   35




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling