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:

typescriptabstract 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:

typescriptclass 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:

typescriptclass Employee extends User {
  public salary: number;

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

Az absztrakt Figure osztályban készítsen absztrakt metódusokat a terület és a kerület megszerzéséhez.

Задание 2

A Square és Rectangle leszármazott osztályokban írja meg ezen metódusok megvalósítását.