Abstraktit OOP-luokat TypeScriptissä

On tilanteita, joissa meillä on yleluokka, joka sisältää yhteisiä ominaisuuksia ja menetelmiä, ja siitä periytyvät alaluokat.

Samalla voi olla niin, että luomme alaluokkien olioita, mutta emme yleluokan olioita. Se tarvitaan meille vain yhteisten ominaisuuksien ja menetelmien ryhmittelyyn.

Tässä tapauksessa, kieltääksemme nimenomaisesti yleluokan olioiden luonnin, voimme ilmoittaa sen abstraktiksi. Tämä tehdään avainsanalla abstract.

Katsotaanpa esimerkkiä. Otetaan luokkamme User ja ilmoitetaan se abstraktiksi:

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

Tehdään luokka Student, joka perii luokasta User:

typescriptclass Student extends User {
  public course: number;

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

Tehdään luokka Employee, joka perii luokasta User:

typescriptclass Employee extends User {
  public salary: number;

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

Luo abstrakti luokka Figure, joka edustaa geometrista kuviota. Olkoon siinä ominaisuudet kehälle ja pinta-alalle.

Задание 2

Tee luokka Square, joka perii luokasta Figure.

Задание 3

Tee luokka Rectangle, joka perii luokasta Figure.