TypeScriptda ABS OOP Klasslari

Ba'zan holatlar bo'ladi, bizda ota-klass bo'ladi, umumiy xususiyatlar va metodlarni o'z ichiga oladi, va undan voris klasslar meros qoladi.

Shu bilan birga, shunday bo'lishi mumkinki, biz voris klasslarning obyektlarini yaratamiz, lekin ota-klassning obyektini yaratmaymiz. U faqat bizga umumiy xususiyatlar va metodlarni guruhlash uchun kerak.

Bunday holatda, ota-klassning obyektlarini yaratishni aniq taqiqlash uchun, uni abstrakt deb e'lon qilishimiz mumkin. Buning uchun abstract kalit so'zi ishlatiladi.

Keling, bir misolni ko'rib chiqaylik. Bizning User klassimizni olaylik va uni abstrakt deb e'lon qilaylik:

typescriptabstract class User {
  public name: string;
  
  constructor(name: string) {
    this.name = name;
  }
}

Keling, User dan meros oluvchi Student klassini yarataylik:

typescriptclass Student extends User {
  public course: number;

  constructor(name: string, course: number) {
    super(name);
    this.course = course;
  }
}

Keling, User dan meros oluvchi Employee klassini yarataylik:

typescriptclass Employee extends User {
  public salary: number;

  constructor(name: string, salary: number) {
    super(name);
    this.salary = salary;
  }
}
Задание 1

Geometrik shaklni ifodalovchi abstrakt Figure klassini yarating. Unda perimetr va yuzaga oid xususiyatlar bo'lsin.

Задание 2

Figure klassidan meros oluvchi Square klassini yarating.

Задание 3

Figure klassidan meros oluvchi Rectangle klassini yarating.