Metode abstracte în OOP în TypeScript
Se întâmplă ca clasele-derivate să trebuiască
să aibă o metodă comună, însă, implementarea acestei
metode depinde de derivatul concret. În
acest caz, această metodă poate fi declarată în
clasa abstractă părinte, fără a scrie
implementarea ei. Și atunci derivații vor fi
obligați să implementeze aceste metode. Astfel de
metode se numesc abstracte și
de asemenea se declară folosind cuvântul cheie
abstract.
Să luăm ca exemplu clasa noastră abstractă
User. Fie ca moștenitorii acestei
clase să trebuiască obligatoriu să aibă o metodă show,
care afișează datele obiectului.
Implementarea acestei metode, însă, va
depinde de derivat. Să declarăm în clasa User
această metodă ca abstractă:
abstract class User {
public name: string;
constructor(name: string) {
this.name = name;
}
public abstract show(): string;
}
Să implementăm această metodă în clasa-derivată Student:
class Student extends User {
public course: number;
constructor(name: string, course: number) {
super(name);
this.course = course;
}
show() {
return this.name + ' ' + this.course;
}
}
Să implementăm această metodă în clasa-derivată Employee:
class Employee extends User {
public salary: number;
constructor(name: string, salary: number) {
super(name);
this.salary = salary;
}
show() {
return this.name + ' ' + this.salary;
}
}
În clasa abstractă Figure faceți
metode abstracte pentru obținerea ariei
și perimetrului.
În clasele-derivate Square și
Rectangle scrieți implementarea acestor
metode.