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;
}
}
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.