⊗jsOpIhPPP 36 of 60 menu

JavaScript да ООП да мерос хисобланида хусусий хусусиятлар муаммоси

Хусусий хусусиятлар мерос олинмаслиги кутмаган муаммога олиб келиши мумкин. Келгила, мисолда кўрамиз. Фарз қилайлик, бизда куйидаги ота-синф ва унинг хусусий хусусияти бор:

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

Фарз қилайлик, бола-синфда биз ёшни биттага оширадиган метод ясамоқчимиз. Аммо, ота-синфнинг хусусий хусусиятини ўзгартиришга уриниш хатоликка олиб келади:

class Student extends User { incAge() { this.#age++; // хатолик } }

Хатолик бола-синфда хусусий хусусият #ageни эълон қилинса йўқолади:

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

Ана ўша ерда силкиниш кутиб туради! Аслида биз иккита хусусий хусусият ясадок: бири ота-синфда ва иккинчиси бола-синфда. Ва улар ишлайди умумиян мустақил. Бу демакдики, ота-синф методлари ўзгартиради ўз хусусиятларини, ва бола-синф методлари - ўзлариники.

Бу муаммо аслида ечимга эга. Оддийгина хусусий хусусиятлар билан ишлаш керак ота-синфнинг хусусий хусусиятларини шу ота-синфнинг методлари орқали. Келгила, бизнинг кодни қайдонайлик шунингга мувофик:

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

Соддалаштириш мумкин:

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

Куйидаги кодда бола-синфда ота-синфнинг метожи қайта аникланган. Ушбу коддаги муаммоларни тузатинг:

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; } } }
Ўзбек
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeOʻzbekTiếng Việt
Биз веб-сайт ишлаши, таҳлил қилиш ва персоналлаштириш учун кукидан фойдаланамиз. Маълумотларни қайта ишлаш Махфийлик сиёсатига мувофиқ амалга оширилади.
ҳаммасини қабул қилиш мослаштириш рад этиш