Abstrakte OOP klasser i TypeScript

Der er situationer, hvor vi har en forældreklasse, der indeholder fælles egenskaber og metoder, og den arves af underklasser.

Samtidig kan det være, at vi vil oprette objekter af underklasser, men ikke forældreklassen. Den er kun nødvendig for os for at gruppere fælles egenskaber og metoder.

I dette tilfælde, for eksplicit at forbyde oprettelse af objekter af forældreklassen, kan vi erklære den abstrakt. Dette gøres ved hjælp af nøgleordet abstract.

Lad os se på et eksempel. Lad os tage vores klasse User og erklære den abstrakt:

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

Lad os oprette klassen Student, som arver fra User:

typescriptclass Student extends User {
  public course: number;

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

Lad os oprette klassen Employee, som arver fra User:

typescriptclass Employee extends User {
  public salary: number;

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

Opret en abstrakt klasse Figure, der repræsenterer en geometrisk figur. Lad den have egenskaber for omkreds og areal.

Задание 2

Lav en klasse Square, der arver fra klassen Figure.

Задание 3

Lav en klasse Rectangle, der arver fra klassen Figure.