JavaScript meros (extends, super)
Bir necha klass umumiy xususiyatga ega bo’lsa, ularni har birida qayta yozish shart emas. Meros umumiy qismni bitta joyda saqlashga imkon beradi.
Muammo: takrorlanadigan klasslar
class Talaba {
constructor(ism, yosh) { this.ism = ism; this.yosh = yosh; }
tanishtir() { return this.ism + ", " + this.yosh + " yosh"; }
}
class Oqituvchi {
constructor(ism, yosh) { this.ism = ism; this.yosh = yosh; }
tanishtir() { return this.ism + ", " + this.yosh + " yosh"; }
}
Ikkalasida ham ism, yosh va tanishtir bir xil. Umumiy qismni ajratish
kerak.
extends — kengaytirish
Talaba tanishtir metodini yozmagan, lekin u ishladi — ota klassdan
meros qilib olindi.
super majburiy
Avlod constructor’ida this dan oldin super() chaqirilishi shart:
Sababi: this obyekti ota constructor tomonidan yaratiladi — u chaqirilmaguncha
this mavjud emas.
Metodni qayta yozish
Avlod ota metodini o’zinikiga almashtira oladi:
super.tanishtir() ota versiyasini chaqirdi, so’ng natijaga qo’shimcha
qo’shildi. Bu — noldan yozishdan ko’ra yaxshi usul.
Ko’p bosqichli meros
Zanjir bo’ylab har daraja o’z hissasini qo’shdi.
instanceof — turini tekshirish
Obyekt butun zanjirga tegishli hisoblanadi: Talaba ham Inson.
Amaliy misol — xato klasslari
Meros xatolarni turkumlashda ko’p ishlatiladi:
catch blokida instanceof bilan xato turiga qarab turlicha ish tutish
mumkin.
Merosdan foydalanmaslik ham to’g’ri
Amaliy mashq
Hayvonklassini yozing:nomvaovoz()metodi;ItvaMushukklasslariniextendsbilan yarating;- har birida
ovoz()ni qayta yozing; - avlod constructor’iga qo’shimcha xossa qo’shing va
superchaqiring; super.ovoz()ni chaqirib, natijaga qo’shimcha qo’shing;instanceofbilan uch xil tekshiruv o’tkazing.
Qisqacha xulosa
extendsavlod klassni ota klass asosida yaratadi.- Avlod constructor’ida
super()thisdan oldin chaqirilishi shart. - Metod qayta yozilsa, ota versiyasi
super.metod()bilan chaqiriladi. instanceofbutun meros zanjirini hisobga oladi.Errordan meros olib, o’z xato turlaringizni yaratish mumkin.- Chuqur meros o’rniga ko’pincha kompozitsiya afzal.
Keyingi darsda Set va Map — maxsus to’plam turlari.