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

JavaScript

Student introduce 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: Student ham Person.

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. Animal klassini yozing: name va sound() metodi;
  2. Dog va Cat klasslarini extends bilan yarating;
  3. har birida sound() 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