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:
class User {
protected cape(str: string) {
return str[0].toUpperCase() + str.slice(1);
}
}
Buat kelas Student, yang mewarisi
dari kelas User:
class Student extends User {
private name: string;
constructor(name: string) {
super();
this.name = name;
}
}
Tambahkan metode yang menampilkan nama:
class 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:
class 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:
let student: Student = new Student('john');
Gunakan metode untuk menampilkan siswa:
console.log(student.showName());
Namun upaya untuk memanggil metode cape
dari luar kelas akan menyebabkan error:
console.log(student.cape('test')); // error
Diberikan kelas berikut:
class 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.