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