Абстрактные ООП классы в 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.