A protected módosító TypeScript-ben
A privát tulajdonságok és metódusok nem öröklődnek
az utódok által. Néha azonban szükségünk van arra,
hogy egy tulajdonság vagy metódus ne legyen kívülről elérhető,
de az utódok örököljék. Ebben
az esetben a
protected módosítót kell használni.
Próbáljuk ki gyakorlatban. Deklaráljunk a
User osztályunkban egy cape
metódust védettként a protected módosítóval:
class User {
protected cape(str: string) {
return str[0].toUpperCase() + str.slice(1);
}
}
Készítsünk egy Student osztályt, amely örököl
a User osztálytól:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
}
Adjunk hozzá egy metódust, amely kiírja a nevet:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.name;
}
}
És most használjuk a szülő védett metódusát az utód metódusán belül:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
public showName(): string {
return this.cape(this.name); // a szülő metódusát használjuk
}
}
Hozzunk létre egy objektumot az osztályunkból:
let student: Student = new Student('john');
Használjuk a metódust a diák kiíratásához:
console.log(student.showName());
Azonban a cape metódus kívülről történő
meghívása hibához vezet:
console.log(student.cape('test')); // hiba
Adott a következő osztály:
class User {
protected name: string;
protected surn: string;
constructor(name: string, surn: string) {
this.name = name;
this.surn = surn;
}
}
Örököljön ebből az osztályból egy Employee
osztályt, amely hozzáad egy védett salary
tulajdonságot,
valamint gettereket az összes tulajdonsághoz, mind a saját,
mind az örökölt tulajdonságokhoz.