TypeScript да Абстракт ООП Класслар

Бизда ота-она класси бўлиши мумкин, у умумий хусусиятлар ва усулларни ўз ичига олади, ва ундан фарзанд класслар мерос олади.

Шу билан бирга, шундай бўлиши мумкинки, биз фарзанд классларнинг объектларини яратамиз, лекин ота-она классиники эмас. У бизга факат умумий хусусиятлар ва усулларни гуруҳлаш учун керак.

Бундай ҳолда, ота-она классининг объектларини яратишни аник тақиқлаш учун, уни абстракт эълон қилишимиз мумкин. Бу abstract калит сўзи ёрдамида бажарилади.

Келгила, мисолда кўрамиз. Бизнинг User классимизни олиб, уни абстракт деб эълон қиламиз:

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

User дан мерос олувчи Student классини яраймиз:

typescriptclass Student extends User {
  public course: number;

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

User дан мерос олувчи Employee классини яраймиз:

typescriptclass Employee extends User {
  public salary: number;

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

Геометрик шаклни ифодаловчи абстракт Figure классини яратинг. Унда периметр ва юза учун хусусиятлар бўлсин.

Задание 2

Figure классидан мерос олувчи Square классини яратинг.

Задание 3

Figure классидан мерос олувчи Rectangle классини яратинг.