Abstraktni OOP razredi v TypeScript

Obstajajo situacije, ko imamo nadrejeni razred, ki vsebuje splošne lastnosti in metode, od njega pa podedujejo podrejeni razredi.

Ob tem se lahko zgodi, da bomo ustvarjali objekte podrejenih razredov, ne pa tudi nadrejenega razreda. Ta nam je potreben samo za združevanje splošnih lastnosti in metod.

V tem primeru lahko, da izrecno prepovemo ustvarjanje objektov nadrejenega razreda, razglasimo, da je abstrakten. To naredimo s ključno besedo abstract.

Poglejmo si na primeru. Vzemimo naš razred User in ga razglasimo za abstrakten:

typescriptabstract class User {
  public name: string;
  
  constructor(name: string) {
    this.name = name;
  }
}

Naredimo razred Student, ki podeduje od User:

typescriptclass Student extends User {
  public course: number;

  constructor(name: string, course: number) {
    super(name);
    this.course = course;
  }
}

Naredimo razred Employee, ki podeduje od User:

typescriptclass Employee extends User {
  public salary: number;

  constructor(name: string, salary: number) {
    super(name);
    this.salary = salary;
  }
}
Задание 1

Ustvarite abstrakten razred Figure, ki predstavlja geometrično figuro. Naj ima lastnosti za obseg in ploščino.

Задание 2

Naredite razred Square, ki podeduje od razreda Figure.

Задание 3

Naredite razred Rectangle, ki podeduje od razreda Figure.