TypeScript-də protected modifikatoru
Private xüsusiyyətlər və metodlar varislər tərəfindən
miras alınmır. Bəzən, lakin, bizə elə bir xüsusiyyət və ya
metod lazım olur ki, xaricdən əlçatan olmasın,
amma varislər tərəfindən miras alınsın. Bu
halda protected modifikatorundan
istifadə etmək lazımdır.
Gəlin praktikada sınayaq. User sinifimizdə
cape metodunu protected modifikatoru ilə
qorunan kimi elan edək:
class User {
protected cape(str: string) {
return str[0].toUpperCase() + str.slice(1);
}
}
Gəlin User sinfindən miras alan
Student sinfini yaradaq:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
}
Adı çıxaran metodu əlavə edək:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.name;
}
}
İndi isə valideyn sinfinin qorunan metodundan varis sinfin metodu daxilində istifadə edək:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.cape(this.name); // valideynin metodundan istifadə edirik
}
}
Sinifimizin obyektini yaradaq:
let student: Student = new Student('john');
Tələbəni çıxarmaq üçün metoddan istifadə edək:
console.log(student.showName());
cape metodunu sinif xaricindən çağırmaq
cəhdi isə səhvə səbəb olacaq:
console.log(student.cape('test')); // səhv
Aşağıdakı sinif verilmişdir:
class User {
protected name: string;
protected surn: string;
constructor(name: string, surn: string) {
this.name = name;
this.surn = surn;
}
}
Bu sinifdən Employee sinfini miras alın,
hansı ki, qorunan salary xüsusiyyətini əlavə edəcək,
həmçinin həm özünün, həm də miras alınan
bütün xüsusiyyətlərin getterlərini.