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