Абстрактӣ Классҳои ООП дар TypeScript

Ҳолатҳое вуҷуд доранд, ки мо як класи модарӣ дорем, ки хосиятҳо ва методҳои умумӣ дорад, ва аз он класҳои фарзандӣ мерос мегиранд.

Дар ин ҳол, метавонад чунин бошад, ки мо объектҳои класҳои фарзандӣ эҷод кунем, вале аз класи модарӣ на. Он танҳо барои гурӯҳбандии хосиятҳо ва методҳои умумӣ ба мо лозим аст.

Дар ин ҳолат, барои мустақиман манъ кардани эҷоди объектҳои класи модарӣ, мо метавонем онро абстрактӣ эълон кунем. Ин бо ёрии калимаи калидӣ abstract анҷом дода мешавад.

Биёед ба мисол назар кунем. Бигирем класи User-ро ва онро абстрактӣ эълон кунем:

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

Биёед класи Student-ро созем, ки аз User мерос мегирад:

typescriptclass Student extends User {
  public course: number;

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

Биёед класи Employee-ро созем, ки аз User мерос мегирад:

typescriptclass Employee extends User {
  public salary: number;

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

Класи абстрактии Figure-ро эҷод кунед, ки шакли геометрӣ мебошад. Бигзор дар он хосиятҳо барои периметр ва масоҳат бошад.

Задание 2

Класи Square-ро созед, ки аз класи Figure мерос мегирад.

Задание 3

Класи Rectangle-ро созед, ки аз класи Figure мерос мегирад.