abstract sinf va interface o'rtasidagi farq
Interface
|
Abstract sinf
|
Interfeyslarda konkret metodlar bo'lmaydi. Chunonchi, ta'rifli metodlar.
|
Abstrakt sinfning abstrakt metodi va konkret metodi ham bo'lishi mumkin.
|
Interfeys ichida e'lon qilingan barcha metodlar public bo'lishi kerak.
|
Abstrakt sinfning public, private va protected metodlari ham bo'lishi mumkin.
|
Bitta sinf orqali bir qancha interfeyslarni implementatsiya qilish mumkin.
|
Bitta sinf faqat bitta abstrakt sinfdan meros olishi mumkin.
|
Abstrakt klassni yaratishda biz abstract kalit so'zidan foydalanamiz. Abstrakt sifatida belgilangan klass instantsiyalanmaydi. Ya'ni obyekt ololmaymiz.
Quyidagi abstrakt klass va metodlar haqida muhim ko'rsatmalarni o'qing:
Abstrakt klassda boshqa odatiy klass kabi o'z xossa va metodlari bo'lishi mumkin.
Abstrakt klass instantsiyalanmaydi, shuning uchun biz child klass (parent klassdan) yaratib, keyin child klassning obyektini yaratishimiz mumkin.
Agar klassda bitta abstrakt metod bo'lsa, unda klass ham mavjum bo'lishi kerak.
Abstrakt metod shunchaki kod qismi bo'sh bo'lganda ham unga argument va metod nomini kiritoladigan bayonot.
Agar buni tushunishga qiynalayotgan bo'lsangiz, havotir olmang. Keyingi darslarimizda qadamma-qadam barcha ko'rsatma va tushunchalarni berib boramiz.
abstrakt sinfni yaratish
Sinfni abstrakt deb e'lon qilish uchun, sinf nomidan oldin abstract kalit so'zini ishlatishimiz kerak.
Yuqoridagi namunamizda, Vehicle sinfimiz - abstrakt metodi mavjud bo'lgan abstrakt sinf.
Abstrakt klassni yaratish ko'rsatmalariga amal qilish dasturchini o'ziga bog'liq. Misol uchun, agar Vehicle sinfimizni extend qiladigan yangi sinf yaratmoqchi bo'lsangiz abstrakt metod milegae() ta'rifini ta'minlashingiz kerak aks holda, child sinf ham abstrakt bo'lishi kerak bo'ladi. Shuning uchun, barcha child sinflar mileage() metod abstrakt ta'rifini ta'minlashingiz(yozishingiz) kerak.
Abstrakt sinf ichida abstrakt bo'lmagan metod
Har qanday hatto bitta abstrakt metodli sinf abstrakt deb e'lon qilinishi kerak. Ammo, abstrakt sinflarda abstrakt bo'lmagan metodlar ham bo'lishi mumkin, shuningdek, ularni qayta belgilamasdan turib, child sinflar orqali ulardan foydalanish va kirish mumkin.
Yuqoridagi kodimizda, Vehicle abstrakt sinfimizga uchta start(), stop() va setName() nomli abstrakt bo'lmagan metodlarni qo'shdik.
Abstrakt sinflardan meros olish
Boshqa sinflarga o'xshab, abstrakt sinfdan yangi sinf yaratishimiz mumkin bo'ladi.
Bu yerda yagona farq bu parent sinfda belgilangan abstrakt metod ta'rifini child sinflarda ham belgilashingiz kerak.
Agar child sinfda abstrakt metod ta'rifi yozilmagan bo'lsa, unda u abstrakt sinf sifatida belgilanishi kerak.
Keling, Vehicle sinfini meros qilib oluvchi 2 child sinf yaratamiz va unga abstrakt metod ta'rifi mileage() ni belgilaymiz:
Biz xohlaganimizcha child sinfni yaratishimiz mumkin, masalan:
Yuqorida ta'kidlab o'tkanimizdek, abstrakt sinfda hech qanday obyekt bo'lmaydi, bir marta mos child sinfni belgilaymiz va ularni obyektlarini yarataveramiz.
Do'stlaringiz bilan baham: |