Abstrakcyjne klasy OOP w TypeScript
Zdarzają się sytuacje, gdy mamy klasę nadrzędną zawierającą wspólne właściwości i metody, a od niej dziedziczą klasy potomne.
Jednocześnie może być tak, że będziemy tworzyć obiekty klas potomnych, ale nie klasy nadrzędnej. Jest nam ona potrzebna tylko do grupowania wspólnych właściwości i metod.
W tym przypadku, aby wyraźnie zabronić tworzenia
obiektów klasy nadrzędnej, można
zadeklarować ją abstrakcyjną. Robi się
to za pomocą słowa kluczowego abstract.
Spójrzmy na przykład. Weźmy naszą
klasę User i zadeklarujmy ją jako abstrakcyjną:
abstract class User {
public name: string;
constructor(name: string) {
this.name = name;
}
}
Stwórzmy klasę Student, dziedziczącą
po User:
class Student extends User {
public course: number;
constructor(name: string, course: number) {
super(name);
this.course = course;
}
}
Stwórzmy klasę Employee, dziedziczącą
po User:
class Employee extends User {
public salary: number;
constructor(name: string, salary: number) {
super(name);
this.salary = salary;
}
}
Utwórz abstrakcyjną klasę Figure,
reprezentującą figurę geometryczną.
Niech ma właściwości na obwód
i pole powierzchni.
Stwórz klasę Square, dziedziczącą
po klasie Figure.
Stwórz klasę Rectangle, dziedziczącą
po klasie Figure.