Abstraktsed meetodid OOP-s TypeScriptis
Juhtub nii, et alamklassidel peab olema
ühine meetod, kuid selle meetodi realiseerimine
sõltub konkreetsest alamklassist. Sellisel
juhul saab seda meetodit deklareerida
vanema abstraktses klassis, kirjutamata
selle realiseerimist. Siis peavad alamklassid
need meetodid realiseerima. Selliseid
meetodeid nimetatakse abstraktseteks ja
need deklareeritakse ka võtmesõnaga
abstract.
Võtame näiteks meie abstraktse klassi
User. Olgu selle klassi pärijatel kohustuslik
omada meetodit show,
mis kuvab objekti andmed.
Selle meetodi realiseerimine aga
sõltub alamklassist. Deklareerigem klassis User
seda meetodit abstraktsena:
abstract class User {
public name: string;
constructor(name: string) {
this.name = name;
}
public abstract show(): string;
}
Realiseerigem selle meetodi alamklassis Student:
class Student extends User {
public course: number;
constructor(name: string, course: number) {
super(name);
this.course = course;
}
show() {
return this.name + ' ' + this.course;
}
}
Realiseerigem selle meetodi alamklassis Employee:
class Employee extends User {
public salary: number;
constructor(name: string, salary: number) {
super(name);
this.salary = salary;
}
show() {
return this.name + ' ' + this.salary;
}
}
Abstraktses klassis Figure tehke
abstraktsed meetodid pindala
ja perimeetri saamiseks.
Alamklassides Square ja
Rectangle kirjutage nende
meetodite realiseerimine.