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:

typescriptclass 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:

typescriptclass Student extends User {
  private name: string;
  
  constructor(name: string) {
    super();
    this.name = name;
  }
}

Adjunk hozzá egy metódust, amely kiírja a nevet:

typescriptclass 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:

typescriptclass 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:

typescriptlet student: Student = new Student('john');

Használjuk a metódust a diák kiíratásához:

typescriptconsole.log(student.showName());

Azonban a cape metódus kívülről történő meghívása hibához vezet:

typescriptconsole.log(student.cape('test')); // hiba
Задание 1

Adott a következő osztály:

typescriptclass 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.