Abstraktūs OOP klasės TypeScript
Būna situacijų, kai mes turime tėvinę klasę, kurioje yra bendros savybės ir metodai, o iš jos paveldi išvestinės klasės.
Tuo pat metu gali būti taip, kad mes kursime išvestinių klasių objektus, bet ne tėvinės klasės. Ji mums reikalinga tik bendrų savybių ir metodų grupuoti.
Tokiu atveju, kad aiškiai uždraustume kurti
tėvinės klasės objektus, galime
paskelbti ją abstrakčia. Tai
daroma naudojant raktinį žodį abstract.
Pažiūrėkime pavyzdžiu. Paimkime savo
klasę User ir paskelbkime ją abstrakčia:
abstract class User {
public name: string;
constructor(name: string) {
this.name = name;
}
}
Sukurkime klasę Student, kuri paveldi
iš User:
class Student extends User {
public course: number;
constructor(name: string, course: number) {
super(name);
this.course = course;
}
}
Sukurkime klasę Employee, kuri paveldi
iš User:
class Employee extends User {
public salary: number;
constructor(name: string, salary: number) {
super(name);
this.salary = salary;
}
}
Sukurkite abstrakčią klasę Figure,
kuri reprezentuoja geometrinę figūrą.
Tebūnie joje savybės perimetrui
ir plotui.
Sukurkite klasę Square, kuri paveldi
iš klasės Figure.
Sukurkite klasę Rectangle, kuri paveldi
iš klasės Figure.