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:

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

Creiamo la classe Student, che eredita da User:

typescriptclass Student extends User {
  public course: number;

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

Creiamo la classe Employee, che eredita da User:

typescriptclass Employee extends User {
  public salary: number;

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

Crea una classe astratta Figure, che rappresenta una figura geometrica. Lascia che abbia proprietà per il perimetro e l'area.

Задание 2

Crea una classe Square, che eredita dalla classe Figure.

Задание 3

Crea una classe Rectangle, che eredita dalla classe Figure.