Absztrakt metódusok az OOP-ben TypeScript-ben
Előfordul, hogy az leszármazott osztályoknak közös metódussal kell rendelkezniük,
ennek a metódusnak a megvalósítása azonban az adott leszármazotttól függ. Ebben
az esetben ez a metódus deklarálható a szülő absztrakt osztályában anélkül, hogy
megírná a megvalósítását. És akkor a leszármazottak kötelesek lesznek megvalósítani
ezeket a metódusokat. Az ilyen metódusokat absztrakt metódusoknak nevezzük,
és a abstract kulcsszóval deklaráljuk.
Példaként vegyük az absztrakt User osztályunkat. Tegye kötelezővé, hogy ennek
az osztálynak a leszármazottai rendelkezzenek egy show metódussal, amely
kiírja az objektum adatait.
Ennek a metódusnak a megvalósítása azonban a leszármazotttól függ. Deklaráljuk
ezt a metódust absztraktként a User osztályban:
abstract class User {
public name: string;
constructor(name: string) {
this.name = name;
}
public abstract show(): string;
}
Valósítsuk meg ezt a metódust a Student leszármazott osztályban:
class Student extends User {
public course: number;
constructor(name: string, course: number) {
super(name);
this.course = course;
}
show() {
return this.name + ' ' + this.course;
}
}
Valósítsuk meg ezt a metódust a Employee leszármazott osztályban:
class Employee extends User {
public salary: number;
constructor(name: string, salary: number) {
super(name);
this.salary = salary;
}
show() {
return this.name + ' ' + this.salary;
}
}
Az absztrakt Figure osztályban készítsen absztrakt metódusokat a terület
és a kerület megszerzéséhez.
A Square és Rectangle leszármazott osztályokban írja meg ezen
metódusok megvalósítását.