Абстрактныя ААП класы ў 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.