जावा में निजी कंस्ट्रक्टर कैसे लागू करें



यह लेख आपको जावा में निजी कंस्ट्रक्टर के विस्तृत और व्यापक ज्ञान के साथ प्रदान करेगा और इसका उपयोग उदाहरणों के साथ किया जाएगा।

बनाने वाले किसी वस्तु की अवस्था को आरम्भ करने के लिए उपयोग किया जाता है। विधियों के समान, एक निर्माता भी बयानों का एक संग्रह रख सकता है, जिसे निर्देश के अलावा कुछ भी नहीं कहा जा सकता है। इस लेख में, हम प्राइवेट कंस्ट्रक्टर में चर्चा करेंगे निम्नलिखित क्रम में:

जावा में कंस्ट्रक्टर का परिचय

ऑब्जेक्ट के निर्माण के समय कन्स्ट्रक्टर्स को निष्पादित किया जाता है। कंस्ट्रक्टर और उसके अनुप्रयोगों की बेहतर समझ पाने के लिए, बस एक बॉक्स को एक वर्ग के रूप में सोचें। एक बॉक्स वर्ग को कुछ वर्ग चर (यानी लंबाई, चौड़ाई और ऊंचाई) माना जाता है। हालाँकि, इसकी वस्तु बनाते समय (यानी बॉक्स कंप्यूटर की मेमोरी में मौजूद होता है), तो क्या ऐसा बॉक्स मौजूद हो सकता है जिसमें इसकी आयामी मात्रा के लिए कोई मूल्य निर्धारित न हो।





जाहिर है, नहीं।

इसलिए, ऑब्जेक्ट निर्माण पर वर्ग चर के मानों को असाइन करने के लिए एक कंस्ट्रक्टर पेश किया जाता है। यह प्रोग्रामर द्वारा या स्वयं जावा द्वारा स्पष्ट रूप से किया जा सकता है। जावा द्वारा किए जाने पर इसे एक डिफ़ॉल्ट निर्माता के रूप में जाना जाता है।



यह समझना अनिवार्य है कि कोई भी विधि, जो कोडर द्वारा प्रदान की गई पहुंच निर्दिष्टकर्ता के पास है, जिसे निजी बनाया गया है, केवल कक्षा के अंदर ही पहुँचा जा सकता है।

जावा में निजी कंस्ट्रक्टर

सिंगलटन क्लास

नाम से ही, हम एक वर्ग को एक सिंगलटन कह सकते हैं यदि यह उस वर्ग की वस्तुओं की संख्या को एक तक सीमित कर देता है। ऐसे मामलों में एक वर्ग के पास एक से अधिक ऑब्जेक्ट नहीं हो सकते। नेटवर्किंग और डेटाबेस कनेक्टिविटी जैसी अवधारणाओं में सिंगलटन क्लासेस का उपयोग पूरी तरह से किया जाता है। सिंगलटन वर्ग एक है निजी वर्ग



कक्षा का उदाहरण निकालने के लिए एक और तरीका होना चाहिए और परिणाम वापस लाने के लिए एक वापसी विधि। नीचे उसी की एक उपयुक्त व्याख्या है। पहले चित्रलेख में संभावित परिणाम दर्शाया गया है जहाँ 'a.x' का मान 20 के बराबर है और 'b.x' का मान 20 में भी परिणाम है। कोड में, जबकि हम सिंगलटन प्राइवेट क्लास को परिभाषित करते हैं, इसके कंस्ट्रक्टर्स को क्लास के बाहर एक्सेस नहीं किया जा सकता है।

A.x = 20 का मान

B.x = 20 का मान

// जावा प्रोग्राम निजी कंस्ट्रक्टरों का उपयोग करके सिंगलटन // पैटर्न के कार्यान्वयन को प्रदर्शित करने के लिए। आयात java.io. * वर्ग MySingleton {स्थैतिक MySingleton उदाहरण = अशक्त सार्वजनिक int x = 10 // निजी निर्माणकर्ता को निजी MySingleton () {} // फैक्ट्री विधि से बाहर नहीं पहुँचा जा सकता है जो उपयोगकर्ताओं को संस्थागत स्थिर सार्वजनिक MySingleton प्रदान करे getInstance () {if (उदाहरण == null) उदाहरण = नया MySingleton () रिटर्न उदाहरण}} // ड्राइवर वर्ग मुख्य {सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग args []) {MySingleton a = MySletonleton.getInstance () MySingleton b = MySingleton.getInstance () ax = ax + 10 System.out.println ('value of ax =' + ax) System.out.println ('bx का मान =' + bx)}}

जावा में निजी कंस्ट्रक्टर का प्रभाव

निजी निर्माता किसी अन्य वर्ग से व्युत्पन्न कक्षाओं तक नहीं पहुँच सकते हैं। इस प्रकार, हमें एक सार्वजनिक समारोह देना होगा, जिसे निजी निर्माता कहते हैं। मामले में, ऑब्जेक्ट को आरंभीकृत नहीं किया जाता है, या हमें ऑब्जेक्ट को वापस एक उदाहरण भेजना है यदि इसे आरंभीकृत किया गया था। यह विशेष रूप से वस्तुओं के लिए बहुत उपयोगी है, जिसे आरंभीकृत नहीं किया जा सकता है। एक निजी कंस्ट्रक्टर का उपयोग निम्नलिखित मामलों में किया जाता है:

बड़े डेटा एनालिटिक्स के अनुप्रयोग
  • संबंधित कक्षाएं, जिनमें केवल स्थिर विधियां और सदस्य हैं।
  • विशिष्ट कक्षाएं, जिनमें केवल व्यापक रूप से स्थिर अंतिम सदस्य (स्थिरांक) का उपयोग किया गया है।
  • सिंगलेट्स को शामिल करने के लिए।
  • कारखाने के तरीकों को शामिल करने के लिए।

एनुमरेशंस का उपयोग करने के लिए, जो टाइप-सेफ हैं।

आंतरिक कंस्ट्रक्टर चेनिंग

आंतरिक कंस्ट्रक्टर चेनिंग, जब कोई कंस्ट्रक्टर उसी क्लास के दूसरे कंस्ट्रक्टर को कॉल करता है तो उसे कंस्ट्रक्टर चेनिंग कहा जा सकता है। कक्षा के किसी अन्य निर्माता को कॉल करने के लिए इस कीवर्ड का उपयोग करना हमारा कर्तव्य है। कुछ उदाहरणों में, इसका उपयोग वर्ग चर के कुछ डिफ़ॉल्ट मानों को परिभाषित करने के लिए किया जाता है। कृपया यह भी ध्यान रखें कि एक अन्य कंस्ट्रक्टर कॉल कोड ब्लॉक में पहला स्टेटमेंट होना चाहिए।

इसके अलावा, पुनरावर्ती कॉल नहीं होना चाहिए, जो एक अनंत लूप पैदा करेगा। आइए अब हम जावा प्रोग्राम में एक कंस्ट्रक्टर का एक उदाहरण देखते हैं।

package com.journaldev.constructor public class Employee {निजी int id Private String नाम सार्वजनिक कर्मचारी () {यह ('जॉन डो', 999) System.out.println ('डिफ़ॉल्ट कर्मचारी बनाया गया) '} सार्वजनिक कर्मचारी (int i) { यह ('जॉन डो', i) System.out.println ('डिफ़ॉल्ट नाम के साथ बनाया गया कर्मचारी')} सार्वजनिक कर्मचारी (स्ट्रिंग s, int i) {this.id = i this.name = s System.out.println ( 'Employee Created')} सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] args) {कर्मचारी एम्प = नया कर्मचारी () System.out.println (एम्प) Employee emp1 = new Employee (10) System.out.println (emp1) एम्प्लॉई emp2 = नया कर्मचारी ('पंकज', 20) System.out.println (emp2)} @ ऑवरराइड सार्वजनिक स्ट्रिंग toString () {रिटर्न 'आईडी =' + आईडी + ', नाम =' + नाम} सार्वजनिक getId () {वापसी आईडी } public void setId (int id) {this.id = id} सार्वजनिक स्ट्रिंग getName () {रिटर्न नाम} सार्वजनिक शून्य सेटनाम (स्ट्रिंग नाम) {this.name = name}}

सिंगलटन क्लास डिज़ाइन पैटर्न

  • कक्षा-स्तरीय सदस्य (ईगर इनिशियलाइज़ेशन मेथड):

  1. सबसे पहले, सिंगलटन क्लास का एक निजी स्थिर स्थिर उदाहरण बनाएं।

  2. फिर, एक स्थिर विधि लिखें, जो एक सिंगलटन क्लास की वस्तु लौटाती है, जिसे हमने क्लास-सदस्य उदाहरण के रूप में बनाया है।

    इस जावा का उपयोग कब करें
  3. सीधे स्थिर उदाहरण तक पहुंचने के लिए एक स्थिर सदस्य को जनता के रूप में चिह्नित करना संभव है।

  4. सिंग्लटन वर्ग तात्कालिकता के मामले में एक सामान्य जावा वर्ग से भिन्न होता है। एक सामान्य वर्ग में, एक कंस्ट्रक्टर का उपयोग किया जाता है, लेकिन सिंगलटन वर्ग के लिए हम प्राप्त इंस्टेंस () पद्धति का उपयोग करते हैं।

  • कक्षा स्तर के सदस्य (आलसी प्रारंभिक विधि):

  1. सबसे पहले, एक निर्माता को निजी के रूप में आरंभ करें।

  2. फिर इस एकल वर्ग का एक निजी स्थिर उदाहरण बनाएं। ध्यान रखें कि इसे तुरंत न करें।

  3. फिर, एक स्थैतिक विधि लिखें, जो अशक्त के लिए स्थैतिक उदाहरण के सदस्य की जाँच करता है और उदाहरण को आरंभ करता है। अंत में, यह एकल वर्ग की एक वस्तु देता है।

  • कक्षा स्तर के सदस्य (डबल लॉक विधि के साथ आलसी प्रारंभिककरण):

दो थ्रेड्स पर विचार करें, जहां दोनों 'अगर' कथन के अंदर मिलते हैं, जबकि उदाहरण अशक्त है। जहां, एक धागा एक उदाहरण बनाने के लिए एक सिंक्रनाइज़ ब्लॉक में जाता है, जबकि दूसरा अवरुद्ध होता है। जैसा कि पहला धागा सिंक्रनाइज़ किए गए ब्लॉक में रहता है, कतार में धागा एक और सिंगलटन ऑब्जेक्ट बनाता है। कृपया ध्यान दें कि जैसा कि दूसरा धागा एक सिंक्रनाइज़ किए गए ब्लॉक में प्रवेश करता है, यह जाँचने में विफल रहता है कि क्या उदाहरण गैर-अशक्त है।

  • नेस्टेड इनर क्लास (आलसी लोड विधि) का उपयोग करना:

यहाँ, यह जावा लैंग्वेज स्पेसिफिकेशन्स (JLS) पर आधारित है। जावा वर्चुअल मशीन स्थैतिक डेटा-सदस्यों को केवल मांग पर लोड करती है। इस प्रकार, सिंगलटन वर्ग जेवीएम द्वारा पहले लोड होता है। इसलिए, किसी वर्ग में कोई स्थिर डेटा सदस्य नहीं है

सिंगलटन क्लास होल्डर SINGLE_INSTANCE लोड नहीं करता है। जब हम getIntance विधि लागू करते हैं, तो केवल यही होता है। JLS वर्ग के आरंभ के निष्पादन की गारंटी देता है। लोडिंग और आरंभीकरण के लिए स्थिर getInstance () विधि पर स्पष्ट सिंक्रनाइज़ेशन के लिए एक प्रावधान। जैसे कि इनिशियलाइज़ेशन स्टैटिक वेरिएबल SINGLE_INSTANCE को क्रमबद्ध तरीके से बनाता है, getInstance () के सभी समवर्ती चालान बिना सिंक्रोनाइज़ेशन ओवरहेड के वापस आएंगे।

  • Enums का उपयोग करके

उपरोक्त सभी दृष्टिकोण सभी मामलों में पूर्ण समाधान नहीं हैं। उपरोक्त कार्यान्वयन के कई उदाहरण प्रतिबिंब का उपयोग करके बनाए जा सकते हैं। दोनों परिदृश्यों में, हम निजी कंस्ट्रक्टर को बायपास कर सकते हैं और कई उदाहरण बना सकते हैं। इसलिए, एक नया तरीका यह है कि एनमों का उपयोग करके एक सिंगलटन क्लास बनाया जाए। जैसे कि एनम फील्ड्स को टाइम कांस्टेंट संकलित किया जाता है, वे उनके एनुम प्रकार के उदाहरण हैं। इनका निर्माण तब किया जाता है जब पहली बार enum type को संदर्भित किया जाता है।

इसके साथ, हम जावा लेख में निजी कंस्ट्रक्टर के अंत में आते हैं। मुझे आशा है कि आपको निजी कंस्ट्रक्टर्स की समझ मिल गई होगी और उन्हें जावा में कैसे उपयोग किया जा सकता है।

इसकी जाँच पड़ताल करो 250,000 से अधिक संतुष्ट शिक्षार्थियों के एक नेटवर्क के साथ एक विश्वसनीय ऑनलाइन शिक्षण कंपनी, एडुरेका द्वारा, दुनिया भर में फैली हुई है। एडुर्का का जावा J2EE और SOA प्रशिक्षण और प्रमाणन पाठ्यक्रम उन छात्रों और पेशेवरों के लिए डिज़ाइन किया गया है जो जावा डेवलपर बनना चाहते हैं। पाठ्यक्रम आपको जावा प्रोग्रामिंग में एक सिर शुरू करने के लिए डिज़ाइन किया गया है और आपको हाइबरनेट और स्प्रिंग जैसे विभिन्न जावा फ्रेमवर्क के साथ कोर और उन्नत जावा अवधारणाओं दोनों के लिए प्रशिक्षित करता है।

कैसे जावा में एक पैकेज बनाने के लिए

क्या आप हमसे कोई प्रश्न पूछना चाहते हैं? कृपया इस 'जावा ट्यूटोरियल' ब्लॉग के टिप्पणी अनुभाग में उल्लेख करें और हम जल्द से जल्द आपके पास वापस आ जाएंगे।