Апстрактне ООП класе у 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;
  }
}
Задание 1

Направите апстрактну класу Figure, која представља геометријску фигуру. Нека у њој буду својства за обим и површину.

Задание 2

Направите класу Square која наслеђује од класе Figure.

Задание 3

Направите класу Rectangle која наслеђује од класе Figure.