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ă:
abstract class User {
public name: string;
constructor(name: string) {
this.name = name;
}
}
Să facem clasa Student, care moștenește
de la User:
class 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:
class Employee extends User {
public salary: number;
constructor(name: string, salary: number) {
super(name);
this.salary = salary;
}
}
Creați o clasă abstractă Figure,
care reprezintă o figură geometrică.
Să aibă proprietăți pentru perimetru
și arie.
Faceți clasa Square, care moștenește
de la clasa Figure.
Faceți clasa Rectangle, care moștenește
de la clasa Figure.