⊗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çeЎзбекOʻzbekTiếng Việt
Біз сайттың жұмысы, аналитика және персонализация үшін cookie файлдарын қолданамыз. Деректерді өңдеу Құпиялылық саясаты бойынша жүреді.
барлығын қабылдау баптау қабылдамау