36 of 60 menu

Մասնավոր հատկությունների ժառանգման խնդիրը OOP-ում 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हिन्दीMagyarIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Մենք օգտագործում ենք cookie-ներ կայքի աշխատանքի, վերլուծության և անհատականացման համար։ Տվյալների մշակումը կատարվում է համաձայն Գաղտնիության քաղաքականության։
ընդունել բոլորը կարգավորել մերժել