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:
abstract class User {
public name: string;
constructor(name: string) {
this.name = name;
}
}
Tehdään luokka Student, joka perii
luokasta User:
class Student extends User {
public course: number;
constructor(name: string, course: number) {
super(name);
this.course = course;
}
}
Tehdään luokka Employee, joka perii
luokasta User:
class Employee extends User {
public salary: number;
constructor(name: string, salary: number) {
super(name);
this.salary = salary;
}
}
Luo abstrakti luokka Figure,
joka edustaa geometrista kuviota.
Olkoon siinä ominaisuudet kehälle
ja pinta-alalle.
Tee luokka Square, joka perii
luokasta Figure.
Tee luokka Rectangle, joka perii
luokasta Figure.