Abstraktné metódy v OOP v TypeScript

Stáva sa, že triedy-potomkovia musia mať spoločnú metódu, no implementácia tejto metódy závisí od konkrétneho potomka. V tomto prípade je možné túto metódu deklarovať v abstraktnej triede rodiča, bez napísania jej implementácie. A potomkovia budú povinní implementovať tieto metódy. Takéto metódy sa nazývajú abstraktné a tiež sa deklarujú pomocou kľúčového slova abstract.

Vezmime si napríklad našu abstraktnú triedu User. Nech dedičia tejto triedy musia mať metódu show, ktorá zobrazí dáta objektu.

Implementácia tejto metódy však bude závisieť od potomka. Deklarujme túto metódu ako abstraktnú v triede User:

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

Implementujme túto metódu v triede-potomkovi Student:

typescriptclass Student extends User {
  public course: number;

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

Implementujme túto metódu v triede-potomkovi Employee:

typescriptclass Employee extends User {
  public salary: number;

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

V abstraktnej triede Figure vytvorte abstraktné metódy na získanie plochy a obvodu.

Задание 2

V triedach-potomkoch Square a Rectangle napíšte implementáciu týchto metód.