Modifikuesi protected në TypeScript
Vetitë dhe metodat private nuk trashëgohen
nga pasardhësit. Megjithatë, ndonjëherë ne kemi nevojë që
një veti ose metodë të mos jetë e arritshme nga jashtë,
por të jetë e trashëguar nga pasardhësit. Në këtë
rast duhet të përdoret modifikuesi
protected.
Le ta provojmë në praktikë. Le të deklarojmë në
klasën tonë User metodën cape
si të mbrojtur duke përdorur modifikuesin protected:
typescriptclass User {
protected cape(str: string) {
return str[0].toUpperCase() + str.slice(1);
}
}
Le të krijojmë klasën Student, që trashëgon
nga klasa User:
typescriptclass Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
}
Le të shtojmë një metodë që shfaq emrin:
typescriptclass Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.name;
}
}
Dhe tani le të përdorim metodën e mbrojtur të prindit brenda metodës së pasardhësit:
typescriptclass Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.cape(this.name); // përdorim metodën e prindit
}
}
Le të krijojmë një objekt të klasës sonë:
typescriptlet student: Student = new Student('john');
Le të përdorim metodën për të shfaqur studentin:
typescriptconsole.log(student.showName());
Por një përpjekje për të thirrur metodën cape
nga jashtë klasës do të rezultojë në gabim:
typescriptconsole.log(student.cape('test')); // gabim
Jepet klasa e mëposhtme:
typescriptclass User {
protected name: string;
protected surn: string;
constructor(name: string, surn: string) {
this.name = name;
this.surn = surn;
}
}
Trashëgoni nga kjo klasë klasën Employee,
e cila do të shtojë vetinë e mbrojtur salary,
si dhe getters për të gjitha vetitë, si të vetat,
ashtu edhe ato të trashëguara.