Апстрактни ООП класи во TypeScript
Постојат ситуации кога имаме родителска класа, која содржи општи својства и методи, а од неа наследуваат класи-потомци.
Притоа, може да биде така што ќе креираме објекти од класите-потомци, но не и од родителската класа. Таа ни е потребна само за групирање на општи својства и методи.
Во овој случај, за експлицитно да го забраниме создавањето
на објекти од родителската класа, може
да ја декларираме како апстрактна. Ова
се прави со клучниот збор abstract.
Да погледнеме на пример. Да ја земеме нашата
класа User и да ја декларираме како апстрактна:
typescriptabstract class User {
public name: string;
constructor(name: string) {
this.name = name;
}
}
Да направиме класа Student, која наследува
од User:
typescriptclass Student extends User {
public course: number;
constructor(name: string, course: number) {
super(name);
this.course = course;
}
}
Да направиме класа Employee, која наследува
од User:
typescriptclass Employee extends User {
public salary: number;
constructor(name: string, salary: number) {
super(name);
this.salary = salary;
}
}
Создадете апстрактна класа Figure,
која претставува геометриска фигура.
Нека во неа има својства за периметар
и плоштина.
Направете класа Square, која наследува
од класата Figure.
Направете класа Rectangle, која наследува
од класата Figure.