Abstrakta OOP-klasser i TypeScript
Det finns situationer när vi har en förälderklass som innehåller gemensamma egenskaper och metoder, och från den ärver barnklasserna.
Samtidigt kan det vara så att vi kommer att skapa objekt av barnklasserna, men inte av förälderklassen. Den behövs bara för att gruppera gemensamma egenskaper och metoder.
I det här fallet, för att explicit förbjuda skapande
av objekt från förälderklassen, kan vi
deklarera den som abstrakt. Detta
görs med hjälp av nyckelordet abstract.
Låt oss titta på ett exempel. Vi tar vår
klass User och deklarerar den som abstrakt:
abstract class User {
public name: string;
constructor(name: string) {
this.name = name;
}
}
Vi skapar klassen Student, som ärver
från User:
class Student extends User {
public course: number;
constructor(name: string, course: number) {
super(name);
this.course = course;
}
}
Vi skapar klassen Employee, som ärver
från User:
class Employee extends User {
public salary: number;
constructor(name: string, salary: number) {
super(name);
this.salary = salary;
}
}
Skapa en abstrakt klass Figure,
som representerar en geometrisk figur.
Låt den ha egenskaper för omkrets
och area.
Skapa en klass Square, som ärver
från klassen Figure.
Skapa en klass Rectangle, som ärver
från klassen Figure.