⊗jsOpIhPPP 36 of 60 menu

JavaScript-dä OOP-de miras almadynda hususy aýratynlyklaryň meselesi

Hususy aýratynlyklaryň miras alynmaýandygy, garaşylmadyk problema getirip biler. Geliň, mysal bilen göreli. Bizde aşakdaky atalar klasynyň hususy aýratynlygy bolsun:

class User { #age; setAge(age) { this.#age = age; } getAge() { return this.#age; } }

Çagalar klasynda ýaşy bir birlik köpeltýän metoddý ýasamak isleýändigimizi düşüneli. Emma, atanyň hususy aýratynlygyny üýtgetmek synanyşygy ýalňyşlyk getirer:

class Student extends User { incAge() { this.#age++; // ýalňyşlyk } }

Çagalar klasynda hususy aýratynlyk #age hökmünde nygtalsa, ýalňyşlyk ýokolar:

class Student extends User { #age; incAge() { this.#age++; } }

Şu ýerde bizi pitnä garşylar! Aslynda biz iki hususy aýratynlyk döretdik: biri atada we biri çagada. We olar doly özara garaşsyz işleýärler. Bu şuny aňladýar, atalaryň usullary atanyň aýratynlygyny üýtgeder, çagalaryň usullary bolsa öz aýratynlyklaryny.

Bu meseläniň çözgüdi bar. Diňe atanyň hususy aýratynlyklaryny şol atanyň usullary arkaly dolandyrmaly. Geliň, kodymyzy şu ýörelgä laýyklykda ýazalyň:

class Student extends User { incAge() { let age = this.getAge(); age++; this.setAge(age); } }

Ýönekeýleşdirip bolýar:

class Student extends User { incAge() { this.setAge(++this.getAge()); } }

Aşakdaky koda çagalar klasynda atalaryň usuly çalşyrylýar. Bu kodda ýüze çykan meseläni düzediň:

class User { #name; setName(name) { this.#name = name; } getName() { return this.#name; } } class Employee extends User { setName(name) { if (name.length > 0) { this.#name = name; } } }
Türkmen
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkçeЎзбекOʻzbekTiếng Việt
Biz sahypanyň işlemegi, analitika we şahsyýetleşdirmek üçin cookie ulanýarys. Maglumatlaryň işlenişi Gizlinlik syýasaty boýunça amala aşyrylýar.
hemmesini kabul et sazlamak ret et