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 :
abstract class User {
public name: string;
constructor(name: string) {
this.name = name;
}
}
Créons la classe Student, héritant
de User :
class 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 :
class Employee extends User {
public salary: number;
constructor(name: string, salary: number) {
super(name);
this.salary = salary;
}
}
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.
Créez une classe Square, héritant
de la classe Figure.
Créez une classe Rectangle, héritant
de la classe Figure.