Abstraktsed OOP klassid TypeScriptis

On olukordi, kus meil on vanemaklass, mis sisaldab üldisi omadusi ja meetodeid, ja sellest pärivad alamklassid.

Samuti võib juhtuda, et loome alamklasside objekte, kuid mitte vanemaklassi objekte. See on meile vajalik vaid üldiste omaduste ja meetodite grupeerimiseks.

Sel juhul, et selgesõnaliselt keelata vanemaklassi objektide loomist, saame selle deklareerida abstraktsena. Seda tehakse võtmesõna abstract abil.

Vaatame näidet. Võtame oma klassi User ja deklareerime selle abstraktsena:

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

Teeme klassi Student, mis pärineb klassist User:

typescriptclass Student extends User {
  public course: number;

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

Teeme klassi Employee, mis pärineb klassist User:

typescriptclass Employee extends User {
  public salary: number;

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

Looge abstraktne klass Figure, mis esindab geomeetrilist kujundit. Olgu sellel omadused perimeetri ja pindala jaoks.

Задание 2

Tegelege klassiga Square, mis pärineb klassist Figure.

Задание 3

Tegelege klassiga Rectangle, mis pärineb klassist Figure.