Abstraktūs metodai OOP TypeScript kalboje
Pasitaiko situacijų, kai išvestinių klasių turi turėti
bendrą metodą, tačiau šio metodo
implementacija priklauso nuo konkrečios išvestinės klasės. Tokiu
atveju šis metodas gali būti deklaruojamas abstrakčioje
tėvinėje klasėje, neparašant
jo implementacijos. Tada išvestinės klasės bus
privalomas įgyvendinti šiuos metodus. Tokie
metodai vadinami abstrakčiaisiais ir
taip pat deklaruojami naudojant raktinį žodį
abstract.
Paimkime, pavyzdžiui, mūsų abstrakčią
klasę User. Tegul šios klasės
paveldėtojai būtinai turi turėti metodą show,
kuris atvaizduoja objekto duomenis.
Šio metodo implementacija, tačiau,
priklausys nuo išvestinės klasės. Deklaruokime klasėje User
šį metodą kaip abstraktų:
abstract class User {
public name: string;
constructor(name: string) {
this.name = name;
}
public abstract show(): string;
}
Įgyvendinkime šį metodą išvestinėje klasėje Student:
class Student extends User {
public course: number;
constructor(name: string, course: number) {
super(name);
this.course = course;
}
show() {
return this.name + ' ' + this.course;
}
}
Įgyvendinkime šį metodą išvestinėje klasėje Employee:
class Employee extends User {
public salary: number;
constructor(name: string, salary: number) {
super(name);
this.salary = salary;
}
show() {
return this.name + ' ' + this.salary;
}
}
Abstrakčioje klasėje Figure padarykite
abstrakčius metodus plotui
ir perimetrui gauti.
Išvestinėse klasėse Square ir
Rectangle parašykite šių
metodų implementaciją.