⊗jsOpIhPtM 37 of 60 menu

Metode protejate în OOP în JavaScript

Metodele private nu sunt moștenite și nu sunt vizibile în afara clasei. Uneori, totuși, sunt necesare metode, care sunt moștenite, dar nu sunt vizibile în afara clasei. Astfel de metode se numesc protejate (protected). JavaScript, din păcate, nu suportă astfel de metode.

Prin urmare, propun să introducem o anumită convenție, care să permită crearea unor astfel de metode. Vom începe numele acestor metode cu un underscore. De fapt, vom folosi vechea convenție general acceptată despre metodele private. Doar că vom numi astfel de metode protejate ca semn că acestea sunt moștenite, dar nu le vom folosi în afara clasei. Apropo, exact așa se aplică și conform vechii convenții.

Deci, să scriem o clasă părinte cu o metodă protejată:

class User { setName(name) { this.name = name; } getName() { return this._capeFirst(this.name); } _capeFirst(str) { return str[0].toUpperCase() + str.slice(1); } }

Să folosim această metodă protejată într-o clasă copil:

class Student extends User { setSurn(surn) { this.surn = surn; } getSurn() { return this._capeFirst(this.surn); } }

În următorul cod, faceți metoda auxiliară protejată:

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