Absztrakt OOP osztályok TypeScript-ben

Vannak helyzetek, amikor van egy szülőosztályunk, amely általános tulajdonságokat és metódusokat tartalmaz, és ebből származnak leszármazott osztályok.

Közben előfordulhat, hogy a leszármazott osztályok példányait létrehozzuk, de a szülőosztályét nem. Az csak az általános tulajdonságok és metódusok csoportosításához szükséges számunkra.

Ebben az esetben, hogy kifejezetten megtiltsuk a szülőosztály példányainak létrehozását, deklarálhatjuk absztraktnak. Ez a abstract kulcsszóval történik.

Nézzünk egy példát. Vegyük a User osztályunkat, és deklaráljuk absztraktnak:

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

Készítsük el a Student osztályt, amely örököl a User-től:

typescriptclass Student extends User {
  public course: number;

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

Készítsük el a Employee osztályt, amely örököl a User-től:

typescriptclass Employee extends User {
  public salary: number;

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

Hozz létre egy Figure absztrakt osztályt, amely egy geometriai alakzatot reprezentál. Legyenek benne tulajdonságai a kerület és a terület számára.

Задание 2

Készíts egy Square osztályt, amely örököl a Figure osztálytól.

Задание 3

Készíts egy Rectangle osztályt, amely örököl a Figure osztálytól.