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