Abstrakcyjne klasy OOP w TypeScript

Zdarzają się sytuacje, gdy mamy klasę nadrzędną zawierającą wspólne właściwości i metody, a od niej dziedziczą klasy potomne.

Jednocześnie może być tak, że będziemy tworzyć obiekty klas potomnych, ale nie klasy nadrzędnej. Jest nam ona potrzebna tylko do grupowania wspólnych właściwości i metod.

W tym przypadku, aby wyraźnie zabronić tworzenia obiektów klasy nadrzędnej, można zadeklarować ją abstrakcyjną. Robi się to za pomocą słowa kluczowego abstract.

Spójrzmy na przykład. Weźmy naszą klasę User i zadeklarujmy ją jako abstrakcyjną:

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

Stwórzmy klasę Student, dziedziczącą po User:

typescriptclass Student extends User {
  public course: number;

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

Stwórzmy klasę Employee, dziedziczącą po User:

typescriptclass Employee extends User {
  public salary: number;

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

Utwórz abstrakcyjną klasę Figure, reprezentującą figurę geometryczną. Niech ma właściwości na obwód i pole powierzchni.

Задание 2

Stwórz klasę Square, dziedziczącą po klasie Figure.

Задание 3

Stwórz klasę Rectangle, dziedziczącą po klasie Figure.