Abstrakte OOP-Klassen in TypeScript

Es gibt Situationen, in denen wir eine übergeordnete Klasse haben, die allgemeine Eigenschaften und Methoden enthält, und davon erben untergeordnete Klassen.

Gleichzeitig kann es sein, dass wir Objekte der untergeordneten Klassen erstellen, aber nicht der übergeordneten Klasse. Sie wird nur von uns benötigt, um gemeinsame Eigenschaften und Methoden zu gruppieren.

In diesem Fall, um die Erstellung von Objekten der übergeordneten Klasse explizit zu verbieten, kann man sie als abstrakt deklarieren. Dies geschieht mit dem Schlüsselwort abstract.

Schauen wir uns ein Beispiel an. Nehmen wir unsere Klasse User und deklarieren sie als abstrakt:

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

Erstellen wir die Klasse Student, die von User erbt:

typescriptclass Student extends User {
  public course: number;

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

Erstellen wir die Klasse Employee, die von User erbt:

typescriptclass Employee extends User {
  public salary: number;

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

Erstellen Sie eine abstrakte Klasse Figure, die eine geometrische Figur darstellt. Lassen Sie sie Eigenschaften für den Umfang und die Fläche haben.

Задание 2

Erstellen Sie eine Klasse Square, die von der Klasse Figure erbt.

Задание 3

Erstellen Sie eine Klasse Rectangle, die von der Klasse Figure erbt.