Apstraktne OOP klase u TypeScript-u
Ponekad postoje situacije gde imamo roditeljsku klasu koja sadrži opšta svojstva i metode, a od nje nasleđuju klase-potomci.
Pritom može biti slučaj da ćemo kreati objekte klasa-potomaka, ali ne i roditeljske klase. Ona nam je potrebna samo za grupisanje zajedničkih svojstava i metoda.
U tom slučaju, da bismo eksplicitno zabranili kreiranje
objekata roditeljske klase, možemo
deklarisati je apstraktnom. Ovo
se radi uz pomoć ključne reči abstract.
Pogledajmo na primeru. Uzmimo našu
klasu User i deklarišimo je apstraktnom:
abstract class User {
public name: string;
constructor(name: string) {
this.name = name;
}
}
Napravimo klasu Student koja nasleđuje
od User:
class Student extends User {
public course: number;
constructor(name: string, course: number) {
super(name);
this.course = course;
}
}
Napravimo klasu Employee koja nasleđuje
od User:
class Employee extends User {
public salary: number;
constructor(name: string, salary: number) {
super(name);
this.salary = salary;
}
}
Napravite apstraktnu klasu Figure,
koja predstavlja geometrijsku figuru.
Neka u njoj budu svojstva za obim
i površinu.
Napravite klasu Square koja nasleđuje
od klase Figure.
Napravite klasu Rectangle koja nasleđuje
od klase Figure.