Modifier protected di TypeScript

Properti dan metode privat tidak diwariskan kepada keturunan. Namun, terkadang kita perlu agar properti atau metode tidak dapat diakses dari luar, tapi diwariskan kepada keturunan. Dalam hal ini sebaiknya digunakan modifier protected.

Mari kita coba dalam praktik. Deklarasikan dalam kelas User kita metode cape sebagai terlindungi dengan menggunakan modifier protected:

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

Buat kelas Student, yang mewarisi dari kelas User:

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

Tambahkan metode yang menampilkan nama:

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

Dan sekarang gunakan metode terlindungi induk di dalam metode keturunan:

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

Buat objek dari kelas kita:

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

Gunakan metode untuk menampilkan siswa:

typescriptconsole.log(student.showName());

Namun upaya untuk memanggil metode cape dari luar kelas akan menyebabkan error:

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

Diberikan kelas berikut:

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

Warisi dari kelas ini kelas Employee, yang akan menambahkan properti terlindungi salary, serta getter untuk semua properti, baik miliknya sendiri, maupun yang diwariskan.