Darsliklar Dart Vorislik

Dart Dart Vorislik

Vorislik (inheritance) — OOP ning muhim ustuni. U bir sinfga boshqa sinfning barcha xususiyatlarini “meros qilib olish” imkonini beradi. Bu kod takrorlanishini keskin kamaytiradi va sinflarni mantiqiy iyerarxiyaga soladi. “Talaba” va “O’qituvchi” — ikkovi ham “Inson”, demak umumiy xususiyatlarni “Inson”dan meros oladi.

Vorislikbir sinf (bola) boshqa sinf (ota) ning maydon va metodlarini o’zlashtirishi. Dart’da bu extends kalit so’zi bilan amalga oshiriladi.

Asosiy va bola sinf

Dart’da vorislik class Bola extends Ota shaklida yoziladi:

class Inson {
  String ism = "";
  void tanishtir() {
    print("Men $ism");
  }
}

class Talaba extends Inson {
  int ball = 0;
}

void main() {
  var t = Talaba();
  t.ism = "Master Sherkulov";   // Inson dan meros
  t.ball = 95;                   // o'ziniki
  t.tanishtir();                 // Inson metodini ishlatadi
  print("Ball: ${t.ball}");
}
Men Master Sherkulov
Ball: 95

Talaba sinfi ism maydonini va tanishtir() metodini Inson dan meros oldi, ustiga ball maydonini qo’shdi. Bir marta yozilgan kod qayta ishlatildi.

super — ota sinfga murojaat

Bola sinf ota sinf konstruktoriga yoki metodiga super orqali murojaat qiladi:

class Inson {
  String ism;
  Inson(this.ism);
}

class Talaba extends Inson {
  int ball;
  Talaba(String ism, this.ball) : super(ism);   // ota konstruktorini chaqiradi
}

void main() {
  var t = Talaba("Farrux", 90);
  print("${t.ism}: ${t.ball}");
}
Farrux: 90

: super(ism) ota sinf konstruktorini chaqirdi. Bu vorislikning eng ko’p ishlatiladigan naqshi (konstruktorlarni keyingi darsda batafsil ko’ramiz).

Metodni qayta yozish (override)

Bola sinf ota metodini qayta yozishi mumkin. Buning uchun @override belgisi qo’yiladi:

class Inson {
  void rol() {
    print("Oddiy inson");
  }
}

class Oqituvchi extends Inson {
  @override
  void rol() {
    print("O'qituvchi");
  }
}

void main() {
  Inson().rol();
  Oqituvchi().rol();
}
Oddiy inson
O'qituvchi

Bir xil nomli rol metodi ikki sinfda turlicha ishladi. @override — bu metod ota sinfnikini qayta yozayotganini bildiruvchi belgi; u xatolarning oldini oladi.

super bilan ota metodni chaqirish

Override qilingan metod ichida ota versiyasini ham super bilan chaqirish mumkin:

class Inson {
  void salom() => print("Salom!");
}

class Oqituvchi extends Inson {
  @override
  void salom() {
    super.salom();          // ota metodini chaqiradi
    print("Men o'qituvchiman");
  }
}

void main() {
  Oqituvchi().salom();
}
Salom!
Men o'qituvchiman

super.salom() ota versiyasini chaqirdi, so’ng bola o’zining qo’shimchasini bajardi. Bu ota funksionalligini kengaytirishda foydali.

Xulosa

Bu bo’limda vorislikni, extends bilan asosiy va bola sinf munosabatini, super orqali ota sinfga murojaat va @override bilan metodni qayta yozishni ko’rib chiqdik. Vorislik kodni qayta ishlatishni yangi darajaga olib chiqadi. Keyingi darsda inkapsulyatsiyaga o’tamiz.