RiapaMeTpbi anrmeTa


Usulni bekor qilish va polimorfizm


Download 399.85 Kb.
bet35/97
Sana24.12.2022
Hajmi399.85 Kb.
#1060199
1   ...   31   32   33   34   35   36   37   38   ...   97
Bog'liq
Java (Laboratoriya)

Usulni bekor qilish va polimorfizm
Java ning ish vaqti turiga qarab usul tanlash qobiliyati dinamik polimorfizm deb ataladi. Usulni qidirish birinchi navbatda berilgan sinfda, so'ngra yuqori sinfda, usul topilmaguncha yoki Ob'ektga erishilguncha sodir bo'ladi. - barcha sinflar uchun super klass.
E'tibor bering, statik usullar pastki sinfda bekor qilinishi mumkin, lekin polimorf bo'lishi mumkin emas, chunki ularni chaqirish ob'ektlarga ta'sir qilmaydi.
Agar bir xil nomga va qaytariladigan qiymatga ega bo'lgan ikkita usul bir sinfda bo'lsa, ularning parametrlar ro'yxati boshqacha bo'lishi kerak. Bunday usullar ortiqcha yuklaydi . Agar pastki sinf usuli yuqori sinf (bola sinf) usuli bilan bir xil bo'lsa, u holda pastki sinf usuli yuqori sinf usulini bekor qiladi ( bekor qiladi ). Barcha Java usullari virtualdir ( virtual kalit so'z C++ dagi kabi ishlatilmaydi). Usulni bekor qilish ­polimorfizmni amalga oshiradigan dinamik bog'lanish kontseptsiyasining asosidir. Yuqori sinf havolasi orqali bekor qilingan usul chaqirilganda, Java havola qilingan ob'ekt turiga qarab usulning qaysi versiyasini chaqirish kerakligini aniqlaydi. Shunday qilib, ob'ektning turi ish vaqtida usulning versiyasini aniqlaydi. Quyidagi misolda dinamik bog'lanishga asoslangan polimorfizmni amalga oshirish muhokama qilinadi. Yuqori sinf subklasslar tomonidan bekor qilingan usullarni o'z ichiga olganligi sababli, supersinf ob'ekti qaysi kichik sinf ob'ektiga havola qilishiga qarab, turli kichik sinflarning usullarini chaqiradi. /* 4.4- misol : dinamik usulni ulash : DynDispatch . java */ sinf A {
int i, j; umumiy A( int a, int b) { i = a; j = b;
}
void show() { // i va j chiqishi
System.out.println("i va j: " + i + " " + j);
}
}
sinf B kengaytiradi A { int k ;
ommaviy B (int a, int b, int c) { super (a, b);
k = c;
}
void show() { /* chiqish k: bekor qilingan show() usuli A */ super .show(); // chiqish qiymatlar dan System.out.println("k: " + k);
}
}
C sinf B ni kengaytiradi {

Download 399.85 Kb.

Do'stlaringiz bilan baham:
1   ...   31   32   33   34   35   36   37   38   ...   97




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