Abstraktit menetelmät OOP:ssa TypeScriptissä
Joskus tapahtuu niin, että lapsiluokilla on oltava
yhteinen menetelmä, mutta menetelmän toteutus
riippuu tietystä lapsiluokasta. Tässä
tapauksessa tämä menetelmä voidaan julistaa
vanhemman abstraktissa luokassa kirjoittamatta
sen toteutusta. Ja sitten lapsiluokat ovat
velvollisia toteuttamaan nämä menetelmät. Tällaisia
menetelmiä kutsutaan abstrakteiksi ja
ne myös julistetaan käyttämällä avainsanaa
abstract.
Otetaan esimerkiksi abstrakti luokkamme
User. Olkoon, että tämän luokan
perijöiden on pakko olla menetelmä show,
joka tulostaa olion tiedot.
Menetelmän toteutus kuitenkin
riippuu lapsiluokasta. Julistetaan luokassa User
tämä menetelmä abstraktiksi:
abstract class User {
public name: string;
constructor(name: string) {
this.name = name;
}
public abstract show(): string;
}
Toteutetaan tämä menetelmä lapsiluokassa Student:
class Student extends User {
public course: number;
constructor(name: string, course: number) {
super(name);
this.course = course;
}
show() {
return this.name + ' ' + this.course;
}
}
Toteutetaan tämä menetelmä lapsiluokassa Employee:
class Employee extends User {
public salary: number;
constructor(name: string, salary: number) {
super(name);
this.salary = salary;
}
show() {
return this.name + ' ' + this.salary;
}
}
Abstraktissa luokassa Figure tee
abstraktit menetelmät pinta-alan
ja kehän saamiseksi.
Lapsiluokissa Square ja
Rectangle kirjoita näiden
menetelmien toteutus.