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:

javascriptclass 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:

javascriptclass Student extends User {
  setSurn(surn) {
    this.surn = surn;
  }
  getSurn() {
    return this._capeFirst(this.surn);
  }
}
Задание 1

Aşağıdakı kodda köməkçi metodu mühafizə olunan edin:

javascriptclass 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;
  }
}