Абстрактни методи в ООП в 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 напишете реализация на тези
методи.