Modifieraren protected i TypeScript

Privata egenskaper och metoder ärvs inte av underklasser. Ibland behöver vi dock att en egenskap eller metod inte är tillgänglig utifrån, men ärvs av underklasser. I det här fallet bör modifieraren protected användas.

Låt oss prova i praktiken. Låt oss deklarera en metod cape i vår klass User som skyddad med hjälp av modifieraren protected:

typescriptclass User {
  protected cape(str: string) {
    return str[0].toUpperCase() + str.slice(1);
  }
}

Låt oss skapa klassen Student som ärver från klassen User:

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

Låt oss lägga till en metod som visar namnet:

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

Och nu använder vi den skyddade metoden från föräldraklassen inuti metoderna i underklassen:

typescriptclass Student extends User {
  private name: string;
  
  constructor(name: string) {
    super();
    this.name = name;
  }
  
  public showName(): string {
    return this.cape(this.name); // använder förälderns metod
  }
}

Låt oss skapa ett objekt av vår klass:

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

Låt oss använda metoden för att visa studentens namn:

typescriptconsole.log(student.showName());

Men ett försök att anropa metoden cape utifrån klassen kommer att leda till ett fel:

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

Följande klass är given:

typescriptclass User {
  protected name: string;
  protected surn: string;
  
  constructor(name: string, surn: string) {
    this.name = name;
    this.surn = surn;
  }
}

Ärv från denna klass en klass Employee, som lägger till en skyddad egenskap salary, samt getters för alla egenskaper, både egna och ärvda.