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