Abstraktní OOP třídy v TypeScriptu
Existují situace, kdy máme rodičovskou třídu, která obsahuje obecné vlastnosti a metody, a od ní dědí potomkové třídy.
Zároveň může být tak, že budeme vytvářet objekty potomkových tříd, ale ne rodičovské třídy. Ta je nám potřebná pouze pro skupinování obecných vlastností a metod.
V tomto případě, abychom explicitně zakázali vytváření
objektů rodičovské třídy, lze
ji deklarovat jako abstraktní. To
se provádí pomocí klíčového slova abstract.
Podívejme se na příklad. Vezměme naši
třídu User a deklarujme ji jako abstraktní:
abstract class User {
public name: string;
constructor(name: string) {
this.name = name;
}
}
Vytvořme třídu Student, která dědí
od User:
class Student extends User {
public course: number;
constructor(name: string, course: number) {
super(name);
this.course = course;
}
}
Vytvořme třídu Employee, která dědí
od User:
class Employee extends User {
public salary: number;
constructor(name: string, salary: number) {
super(name);
this.salary = salary;
}
}
Vytvořte abstraktní třídu Figure,
která představuje geometrický útvar.
Nechť v ní jsou vlastnosti pro obvod
a obsah.
Vytvořte třídu Square, která dědí
od třídy Figure.
Vytvořte třídu Rectangle, která dědí
od třídy Figure.