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:
abstract 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:
class 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:
class Employee extends User {
public salary: number;
constructor(name: string, salary: number) {
super(name);
this.salary = salary;
}
}
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.
Készíts egy Square osztályt, amely
örököl a Figure osztálytól.
Készíts egy Rectangle osztályt, amely
örököl a Figure osztálytól.