⊗jsOpIhPPP 36 of 60 menu

जावास्क्रिप्ट में ओओपी में इनहेरिटेंस के दौरान प्राइवेट प्रॉपर्टीज़ की समस्या

प्राइवेट प्रॉपर्टीज़ का इनहेरिट न होना एक अप्रत्याशित समस्या पैदा कर सकता है। आइए एक उदाहरण के माध्यम से देखते हैं। मान लीजिए कि हमारे पास एक प्राइवेट प्रॉपर्टी वाला निम्नलिखित पैरेंट क्लास है:

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çaisMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
हम साइट के कार्य, विश्लेषण और व्यक्तिगतकरण के लिए कुकीज़ का उपयोग करते हैं। डेटा प्रसंस्करण गोपनीयता नीति के अनुसार किया जाता है।
सभी स्वीकार करें कॉन्फ़िगर करें अस्वीकार करें