Metody abstrakcyjne w OOP w TypeScript
Zdarza się, że klasy potomne muszą mieć
wspólną metodę, jednak implementacja tej
metody zależy od konkretnego potomka. W
takim przypadku tę metodę można zadeklarować w
klasie abstrakcyjnej rodzica, nie pisząc
jej implementacji. Wtedy potomkowie będą
zobowiązani do zaimplementowania tych metod. Takie
metody nazywane są abstrakcyjnymi i
również deklaruje się je za pomocą słowa kluczowego
abstract.
Weźmy dla przykładu naszą abstrakcyjną
klasę User. Niech spadkobiercy tej
klasy muszą koniecznie mieć metodę show,
wyświetlającą dane obiektu.
Implementacja tej metody będzie jednak
zależeć od potomka. Zadeklarujmy w klasie User
tę metodę jako abstrakcyjną:
abstract class User {
public name: string;
constructor(name: string) {
this.name = name;
}
public abstract show(): string;
}
Zaimplementujmy tę metodę w klasie potomnej Student:
class Student extends User {
public course: number;
constructor(name: string, course: number) {
super(name);
this.course = course;
}
show() {
return this.name + ' ' + this.course;
}
}
Zaimplementujmy tę metodę w klasie potomnej Employee:
class Employee extends User {
public salary: number;
constructor(name: string, salary: number) {
super(name);
this.salary = salary;
}
show() {
return this.name + ' ' + this.salary;
}
}
W klasie abstrakcyjnej Figure zrób
metody abstrakcyjne do uzyskania pola powierzchni
i obwodu.
W klasach potomnych Square i
Rectangle napisz implementację tych
metod.