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