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 Student {
constructor(name, age) { this.name = name; this.age = age; }
introduce() { return this.name + ", " + this.age + " age"; }
}
class Teacher {
constructor(name, age) { this.name = name; this.age = age; }
introduce() { return this.name + ", " + this.age + " age"; }
}
Ikkalasida ham name, age va introduce bir xil. Umumiy qismni ajratish
kerak.
extends — kengaytirish
Student introduce 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: Student ham Person.
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
Animalklassini yozing:namevasound()metodi;DogvaCatklasslariniextendsbilan yarating;- har birida
sound()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.