Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗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
Биз веб-сайт ишлаши, таҳлил қилиш ва персоналлаштириш учун кукидан фойдаланамиз. Маълумотларни қайта ишлаш Махфийлик сиёсатига мувофиқ амалга оширилади.
ҳаммасини қабул қилиш мослаштириш рад этиш