JavaScript-də OOP-də Mühafizə Olunan Metodlar
Şəxsi metodlar miras alınmır və sinif xaricindən görünmür. Bəzən, ancaq, miras alınan, lakin sinif xaricindən görünməyən metodlara ehtiyac duyulur. Belə metodlar mühafizə olunan (protected) adlanır. JavaScript, təəssüf ki, belə metodları dəstəkləmir.
Ona görə də mən belə metodlar yaratmağa imkan verən müəyyən bir razılaşmanı təqdim etməyi təklif edirəm. Biz belə metodların adlarını altxətt ilə başlayaq. Əslində biz köhnə ümumi qəbul edilmiş şəxsi metodlar razılaşmasından istifadə edəcəyik. Yalnız onları miras alındıqları üçün mühafizə olunan adlandıracağıq, ancaq onları xaricdən istifadə etməyəcəyik. Əslində, köhnə razılaşmaya görə məhz belə istifadə olunurlar.
Beləliklə, gəlin mühafizə olunan metodu olan ana sinif yazaq:
class User {
setName(name) {
this.name = name;
}
getName() {
return this._capeFirst(this.name);
}
_capeFirst(str) {
return str[0].toUpperCase() + str.slice(1);
}
}
Gəlin bu mühafizə olunan metoddan alt sinifdə istifadə edək:
class Student extends User {
setSurn(surn) {
this.surn = surn;
}
getSurn() {
return this._capeFirst(this.surn);
}
}
Aşağıdakı kodda köməkçi metodu mühafizə olunan edin:
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;
}
}