Classi Astratte OOP in TypeScript
Ci sono situazioni in cui abbiamo una classe genitore, che contiene proprietà e metodi comuni, e da essa ereditano le classi figlie.
In questo caso, può succedere che creeremo oggetti delle classi figlie, ma non della classe genitore. Ci serve solo per raggruppare proprietà e metodi comuni.
In questo caso, per vietare esplicitamente la
creazione di oggetti della classe genitore,
possiamo dichiararla astratta. Questo
si fa usando la parola chiave abstract.
Diamo un'occhiata a un esempio. Prendiamo la
nostra classe User e dichiariamola astratta:
abstract class User {
public name: string;
constructor(name: string) {
this.name = name;
}
}
Creiamo la classe Student, che eredita
da User:
class Student extends User {
public course: number;
constructor(name: string, course: number) {
super(name);
this.course = course;
}
}
Creiamo la classe Employee, che eredita
da User:
class Employee extends User {
public salary: number;
constructor(name: string, salary: number) {
super(name);
this.salary = salary;
}
}
Crea una classe astratta Figure,
che rappresenta una figura geometrica.
Lascia che abbia proprietà per il perimetro
e l'area.
Crea una classe Square, che eredita
dalla classe Figure.
Crea una classe Rectangle, che eredita
dalla classe Figure.