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