Abstracte OOP klassen in TypeScript

Er zijn situaties waarin we een ouderklasse hebben die algemene eigenschappen en methoden bevat, en daarvan erven subklassen.

Tegelijkertijd kan het zo zijn dat we objecten van de subklassen zullen aanmaken, maar niet van de ouderklasse. Deze is alleen nodig voor het groeperen van algemene eigenschappen en methoden.

In dit geval, om het aanmaken van objecten van de ouderklasse expliciet te verbieden, kunnen we hem abstract verklaren. Dit gebeurt met het sleutelwoord abstract.

Laten we naar een voorbeeld kijken. We nemen onze klasse User en verklaren hem abstract:

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

Laten we de klasse Student maken, die erft van User:

typescriptclass Student extends User {
  public course: number;

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

Laten we de klasse Employee maken, die erft van User:

typescriptclass Employee extends User {
  public salary: number;

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

Maak een abstracte klasse Figure, die een geometrische figuur voorstelt. Laat er eigenschappen in zijn voor de omtrek en oppervlakte.

Задание 2

Maak een klasse Square, die erft van de klasse Figure.

Задание 3

Maak een klasse Rectangle, die erft van de klasse Figure.