Абстрактни ООП класове в TypeScript
Има ситуации, когато имаме родителски клас, съдържащ общи свойства и методи, а от него наследяват дъщерни класове.
В същото време може да се случи, че ще създаваме обекти от дъщерни класове, но не и от родителския клас. Той ни е необходим само за групиране на общи свойства и методи.
В този случай, за да забраним изрично създаването
на обекти от родителския клас, можем
да го декларираме като абстрактен. Това
става с помощта на ключовата дума abstract.
Нека разгледаме пример. Вземете нашия
клас User и го декларирайте като абстрактен:
abstract class User {
public name: string;
constructor(name: string) {
this.name = name;
}
}
Нека направим клас Student, наследяващ
от User:
class Student extends User {
public course: number;
constructor(name: string, course: number) {
super(name);
this.course = course;
}
}
Нека направим клас Employee, наследяващ
от User:
class Employee extends User {
public salary: number;
constructor(name: string, salary: number) {
super(name);
this.salary = salary;
}
}
Създайте абстрактен клас Figure,
представляващ геометрична фигура.
Нека има свойства за периметър
и площ.
Направете клас Square, наследяващ
от класа Figure.
Направете клас Rectangle, наследяващ
от класа Figure.