Clase abstracte OOP în TypeScript

Există situații când avem o clasă părinte care conține proprietăți și metode generale, și de la ea moștenesc clasele descendente.

În același timp, se poate întâmpla ca noi să creăm obiecte ale claselor descendente, dar nu ale clasei părinte. Ea este necesară doar pentru gruparea proprietăților și metodelor generale.

În acest caz, pentru a interzice în mod explicit crearea obiectelor clasei părinte, o putem declara abstractă. Acest lucru se face cu ajutorul cuvântului cheie abstract.

Să ne uităm la un exemplu. Să luăm clasa noastră User și să o declarăm abstractă:

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

Să facem clasa Student, care moștenește de la User:

typescriptclass Student extends User {
  public course: number;

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

Să facem clasa Employee, care moștenește de la User:

typescriptclass Employee extends User {
  public salary: number;

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

Creați o clasă abstractă Figure, care reprezintă o figură geometrică. Să aibă proprietăți pentru perimetru și arie.

Задание 2

Faceți clasa Square, care moștenește de la clasa Figure.

Задание 3

Faceți clasa Rectangle, care moștenește de la clasa Figure.