Abstrakt sinf va metodlar

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.

Agar urunib ko'rmoqchi bo'lsangiz, mavzuni boshiga o'ting va Vehicle sinfini obyektini yaratishga harakat qiling, aytilganidek yaratolmaysiz va xato FATAL ERROR ga duch kelasiz.