TypeScript'теги protected модификатору

Жеке касиеттер жана ыкмалар мураскорлор тарабынан мурасталбайт. Бирок кээде бизге сырттан кирүүгө жол берилбөгөн, бирок мураскорлордо болгон касиет же ыкма керек болот. Бул учурда protected модификаторун колдонуу керек.

Келигиле иш жүзүндө сынап көрөлү. Биздин User класстарыбызда cape ыкмасын protected модификатору менен корголгон деп жарыялайлы:

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

User класстан мурастаган Student классты түзөлү:

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

Атты чыгаруучу ыкманы кошолу:

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

Эми мураскордун ыкмасы ичинде ата-энесинин корголгон ыкмасын колдонолу:

typescriptclass Student extends User {
  private name: string;
  
  constructor(name: string) {
    super();
    this.name = name;
  }
  
  public showName(): string {
    return this.cape(this.name); // ата-энесинин ыкмасын колдонобуз
  }
}

Биздин класстын объектисин түзөлү:

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

Студентти чыгаруу үчүн ыкманы колдонолу:

typescriptconsole.log(student.showName());

Ал эми cape ыкмасын класс сыртынан чакыруу аракети катага алып келет:

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

Төмөндөгү классты берилди:

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

Бул класстан Employee классты мурастаңыз, ал өзүнүн корголгон касиетин salary кошот, ошондой эле өзүнүн жана мурасталган бардык касиеттердин геттерлерин.