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



Чат с GPT Компилятор