Abstraktné OOP triedy v TypeScript
Vyskytujú sa situácie, keď máme nadradenú triedu, ktorá obsahuje všeobecné vlastnosti a metódy, a od nej dedia odvodené triedy.
Zároveň sa môže stať, že budeme vytvárať objekty odvodených tried, ale nie nadradenej triedy. Je pre nás potrebná len na zoskupenie spoločných vlastností a metód.
V tomto prípade, aby sme výslovne zakázali vytváranie
objektov nadradenej triedy, môžeme
ju deklarovať ako abstraktnú. To
sa vykonáva pomocou kľúčového slova abstract.
Pozrime sa na príklad. Vezmime našu
triedu User a deklarujme ju ako abstraktnú:
abstract class User {
public name: string;
constructor(name: string) {
this.name = name;
}
}
Vytvorme triedu Student, ktorá dedí
od User:
class Student extends User {
public course: number;
constructor(name: string, course: number) {
super(name);
this.course = course;
}
}
Vytvorme triedu Employee, ktorá dedí
od User:
class Employee extends User {
public salary: number;
constructor(name: string, salary: number) {
super(name);
this.salary = salary;
}
}
Vytvorte abstraktnú triedu Figure,
ktorá predstavuje geometrický útvar.
Nech má vlastnosti pre obvod
a obsah.
Vytvorte triedu Square, ktorá dedí
od triedy Figure.
Vytvorte triedu Rectangle, ktorá dedí
od triedy Figure.