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

JavaScript

Talaba tanishtir metodini yozmagan, lekin u ishladi — ota klassdan meros qilib olindi.

super majburiy

Avlod constructor’ida this dan oldin super() chaqirilishi shart:

JavaScript

Sababi: this obyekti ota constructor tomonidan yaratiladi — u chaqirilmaguncha this mavjud emas.

Metodni qayta yozish

Avlod ota metodini o’zinikiga almashtira oladi:

JavaScript

super.tanishtir() ota versiyasini chaqirdi, so’ng natijaga qo’shimcha qo’shildi. Bu — noldan yozishdan ko’ra yaxshi usul.

Ko’p bosqichli meros

JavaScript

Zanjir bo’ylab har daraja o’z hissasini qo’shdi.

instanceof — turini tekshirish

JavaScript

Obyekt butun zanjirga tegishli hisoblanadi: Talaba ham Inson.

Amaliy misol — xato klasslari

Meros xatolarni turkumlashda ko’p ishlatiladi:

JavaScript

catch blokida instanceof bilan xato turiga qarab turlicha ish tutish mumkin.

Merosdan foydalanmaslik ham to’g’ri

Amaliy mashq

  1. Hayvon klassini yozing: nom va ovoz() metodi;
  2. It va Mushuk klasslarini extends bilan yarating;
  3. har birida ovoz() ni qayta yozing;
  4. avlod constructor’iga qo’shimcha xossa qo’shing va super chaqiring;
  5. super.ovoz() ni chaqirib, natijaga qo’shimcha qo’shing;
  6. instanceof bilan uch xil tekshiruv o’tkazing.

Qisqacha xulosa

  • extends avlod klassni ota klass asosida yaratadi.
  • Avlod constructor’ida super() this dan oldin chaqirilishi shart.
  • Metod qayta yozilsa, ota versiyasi super.metod() bilan chaqiriladi.
  • instanceof butun meros zanjirini hisobga oladi.
  • Error dan 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.

Bu dars foydali bo'ldimi?

marta ko'rildi