Kaedah Terlindung dalam OOP dalam JavaScript
Kaedah peribadi tidak diwarisi dan tidak kelihatan dari luar kelas. Walau bagaimanapun, kadangkala kaedah diperlukan yang diwarisi, tetapi tidak kelihatan dari luar kelas. Kaedah sedemikian dipanggil terlindung (protected). Malangnya, JavaScript tidak menyokong kaedah sedemikian.
Oleh itu, saya cadangkan untuk memperkenalkan satu persetujuan yang membolehkan penciptaan kaedah sedemikian. Kita akan mulakan nama kaedah sedemikian dengan garis bawah. Secara praktikalnya kita menggunakan persetujuan lama yang diterima umum tentang kaedah peribadi. Hanya kita namakan kaedah sedemikian sebagai terlindung sebagai tanda bahawa ia diwarisi, tetapi kita tidak akan menggunakannya dari luar. Walau bagaimanapun, inilah cara ia digunakan menurut persetujuan lama itu.
Jadi, mari tulis kelas induk dengan kaedah terlindung:
class User {
setName(name) {
this.name = name;
}
getName() {
return this._capeFirst(this.name);
}
_capeFirst(str) {
return str[0].toUpperCase() + str.slice(1);
}
}
Mari gunakan kaedah terlindung ini dalam kelas anak:
class Student extends User {
setSurn(surn) {
this.surn = surn;
}
getSurn() {
return this._capeFirst(this.surn);
}
}
Dalam kod berikut, jadikan kaedah pembantu sebagai kaedah terlindung:
class User {
setName(name) {
if (this._notEmpty(name)) {
this.name = name;
}
}
getName() {
return this.name;
}
_notEmpty(str) {
return str.length > 0;
}
}
class Employee extends User {
setSurn(surn) {
if (this._notEmpty(surn)) {
this.surn = surn;
}
}
getSurn() {
return this.surn;
}
}