Classes POO abstraites en TypeScript

Il existe des situations où nous avons une classe parent contenant des propriétés et des méthodes communes, et dont héritent des classes enfants.

Dans ce cas, il se peut que nous créions des objets des classes enfants, mais pas de la classe parent. Elle nous est seulement utile pour regrouper les propriétés et méthodes communes.

Dans ce cas, pour interdire explicitement la création d'objets de la classe parent, nous pouvons la déclarer abstraite. Cela se fait à l'aide du mot-clé abstract.

Regardons un exemple. Prenons notre classe User et déclarons-la abstraite :

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

Créons la classe Student, héritant de User :

typescriptclass Student extends User {
  public course: number;

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

Créons la classe Employee, héritant de User :

typescriptclass Employee extends User {
  public salary: number;

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

Créez une classe abstraite Figure, représentant une figure géométrique. Qu'elle ait des propriétés pour le périmètre et la surface.

Задание 2

Créez une classe Square, héritant de la classe Figure.

Задание 3

Créez une classe Rectangle, héritant de la classe Figure.