ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में, कंस्ट्रक्टर एक विशेष फ़ंक्शन होता है जिसे आप ऑब्जेक्ट बनाने के लिए कहते हैं। कंस्ट्रक्टर्स में कई अनूठी विशेषताएं होती हैं जो उन्हें काम करने में सक्षम बनाती हैं।
जावा में, आप एक कंस्ट्रक्टर को उसके वर्ग के नाम पर रखते हैं। एक कंस्ट्रक्टर एक विधि है, जिसे उस वर्ग में परिभाषित किया जाता है जिस पर वह लागू होता है। जावा कंस्ट्रक्टर वैकल्पिक व्यवहार प्रदान करने के लिए ओवरलोडिंग का उपयोग कर सकते हैं। जावा में कंस्ट्रक्टर कोड का पुन: उपयोग करने के लिए इनहेरिटेंस का भी उपयोग कर सकते हैं।
आपको वैसे भी कंस्ट्रक्टर्स की आवश्यकता क्यों है?
कंस्ट्रक्टर्स का मुख्य आधार है वस्तु उन्मुख कार्यकर्म, और जावा कोई अपवाद नहीं है। यह उदाहरण दिखाता है कि आप एक डेटा प्रॉपर्टी और एक विधि के साथ एक मूल सर्कल क्लास को कैसे परिभाषित कर सकते हैं:
पब्लिक क्लास सर्कल {
सार्वजनिक डबल त्रिज्या;
पब्लिक डबल एरिया () {रिटर्न ३.१४१५९ * रेडियस * रेडियस; }
}
फिर आप इस वर्ग का एक उदाहरण बना सकते हैं और इसके साथ बातचीत कर सकते हैं:
सर्कल सी = नया सर्कल ();
सी.त्रिज्या = 2;
System.out.println (सी.एरिया ()); // 12.56636
लेकिन यह जितना हो सकता है उससे कम सुविधाजनक और मजबूत है। डेटा को इनकैप्सुलेट करना, इसे अनधिकृत पहुंच से बचाना एक अच्छा ऑब्जेक्ट-ओरिएंटेड अभ्यास है:
पब्लिक क्लास सर्कल {
निजी दोहरा त्रिज्या;
पब्लिक डबल एरिया () {रिटर्न ३.१४१५९ * रेडियस * रेडियस; }
सार्वजनिक शून्य सेटरेडियस (डबल आर) {त्रिज्या = आर; }
}
अब कॉलिंग कोड का उपयोग कर सकते हैं सेटरेडियस विधि और इसके कार्यान्वयन विवरण के बारे में चिंता करने की ज़रूरत नहीं है:
सर्कल सी = नया सर्कल ();
सी.सेटरेडियस (2);
जब आप इसे बनाते हैं तो कंस्ट्रक्टर किसी ऑब्जेक्ट को डेटा की आपूर्ति करने का एक बेहतर तरीका प्रदान करते हैं। वे अक्सर गुणों के आरंभीकरण के लिए उपयोग किए जाते हैं, जैसे कि RADIUS यहां।
सरल कंस्ट्रक्टर्स के उदाहरण
सबसे बुनियादी कंस्ट्रक्टर वह है जिसमें कोई तर्क नहीं है, जो कुछ भी नहीं करता है:
पब्लिक क्लास सर्कल {
सार्वजनिक सर्किल () {}
}
यह सभी देखें: जावा में कक्षाएं बनाना सीखें Learn
यदि आप एक कंस्ट्रक्टर को परिभाषित नहीं करते हैं, तो जावा एक डिफ़ॉल्ट प्रदान करेगा जो उसी तरह से व्यवहार करता है।
कुछ बातों पर ध्यान दें:
- कंस्ट्रक्टर का नाम वर्ग के नाम से मेल खाता है।
- यह कंस्ट्रक्टर का उपयोग करता है सह लोक एक्सेस संशोधक, इसलिए कोई अन्य कोड इसे कॉल कर सकता है।
- एक कंस्ट्रक्टर में रिटर्न टाइप शामिल नहीं होता है। अन्य विधियों के विपरीत, कंस्ट्रक्टर एक मान वापस नहीं कर सकते।
कंस्ट्रक्टर आमतौर पर किसी तरह का इनिशियलाइज़ेशन करते हैं। ध्यान दें कि उपरोक्त कोड त्रिज्या के मान को प्रारंभ नहीं करता है। इस मामले में, भाषा स्वचालित रूप से इसे शून्य पर सेट कर देगी। यह वर्ग उपयोगकर्ता से उपयोग करने की अपेक्षा करता है सेटरेडियस (). 0 से अधिक उपयोगी डिफ़ॉल्ट का उपयोग करने के लिए, आप इसे कंस्ट्रक्टर के भीतर असाइन कर सकते हैं:
पब्लिक क्लास सर्कल {
पब्लिक सर्कल () {त्रिज्या = 1; }
}
इस वर्ग के साथ बनाई गई मंडलियों का कम से कम अब एक वास्तविक क्षेत्र होगा! कॉलर अभी भी उपयोग कर सकता है सेटरेडियस () 1 के अलावा एक त्रिज्या प्रदान करने के लिए। लेकिन कंस्ट्रक्टर और भी मित्रवत हो सकता है:
पब्लिक क्लास सर्कल {
सार्वजनिक सर्किल (डबल आर) {त्रिज्या = आर; }
}
अब आप जन्म से ही एक विशिष्ट दायरे के साथ मंडलियां बना सकते हैं:
सर्कल सी = नया सर्कल (2);
System.out.println (सी.एरिया ()); // 12.56636
यह कंस्ट्रक्टर्स के लिए एक बहुत ही सामान्य उपयोग है। आप अक्सर उनका उपयोग चर को पैरामीटर मानों में प्रारंभ करने के लिए करेंगे।
कंस्ट्रक्टर ओवरलोडिंग
आप एक वर्ग परिभाषा में एक से अधिक कंस्ट्रक्टर निर्दिष्ट कर सकते हैं:
पब्लिक सर्कल () {त्रिज्या = 1; }
सार्वजनिक सर्किल (डबल आर) {त्रिज्या = आर; }
यह कॉलिंग कोड को वस्तुओं के निर्माण का विकल्प देता है:
वृत्त c1 = नया वृत्त (2);
सर्कल सी 2 = नया सर्कल ();
System.out.println (c1.area() + "," + c2.area ()); // 12.56636, 3.14159
थोड़े अधिक जटिल सर्कल के साथ, आप अधिक दिलचस्प कंस्ट्रक्टरों का पता लगा सकते हैं। यह संस्करण अपनी स्थिति संग्रहीत करता है:
पब्लिक क्लास सर्कल {
सार्वजनिक डबल एक्स, वाई, त्रिज्या;
सार्वजनिक सर्किल () {त्रिज्या = आर; }
सार्वजनिक सर्किल (डबल आर) {त्रिज्या = आर; }
पब्लिक सर्कल (डबल एक्स, डबल वाई, डबल आर) {
यह। एक्स = एक्स; यह। वाई = वाई; त्रिज्या = आर;
}
पब्लिक डबल एरिया () {रिटर्न ३.१४१५९ * रेडियस * रेडियस; }
}
अब आप बिना किसी तर्क के एक वृत्त बना सकते हैं, एक एकल त्रिज्या, या त्रिज्या के साथ x और y निर्देशांक। यह उसी प्रकार का ओवरलोडिंग है जो जावा किसी भी विधि के लिए समर्थन करता है।
कंस्ट्रक्टर चेनिंग
एक सर्कल को दूसरे के आधार पर बनाने के बारे में कैसे? यह हमें मंडलियों को आसानी से कॉपी करने की क्षमता देगा। निम्नलिखित ब्लॉक का निरीक्षण करें:
सार्वजनिक सर्किल (सर्कल सी) {
यह.एक्स = सी.एक्स;
यह.y = c.y;
यह.त्रिज्या = c.त्रिज्या;
}
यह काम करेगा, लेकिन यह अनावश्यक रूप से कुछ कोड दोहराता है। चूंकि सर्कल क्लास में पहले से ही एक कंस्ट्रक्टर है जो व्यक्तिगत गुणों को संभालता है, आप इसके बजाय इसका उपयोग करके कॉल कर सकते हैं यह कीवर्ड:
सार्वजनिक सर्किल (सर्कल सी) {
यह (c.x, c.y, c.radius);
}
यह कंस्ट्रक्टर चेनिंग का एक रूप है, एक कंस्ट्रक्टर को दूसरे से कॉल करना। यह कम कोड का उपयोग करता है और एक ऑपरेशन को डुप्लिकेट करने के बजाय केंद्रीकृत करने में मदद करता है।
पेरेंट कंस्ट्रक्टर को कॉल करना
कंस्ट्रक्टर चेनिंग का दूसरा रूप तब होता है जब एक कंस्ट्रक्टर अपने पैरेंट क्लास के कंस्ट्रक्टर को कॉल करता है। यह या तो स्पष्ट या निहित हो सकता है। पैरेंट कंस्ट्रक्टर को स्पष्ट रूप से कॉल करने के लिए, का उपयोग करें सुपर कीवर्ड:
सुपर (एक्स, वाई);
सर्कल के माता-पिता के रूप में अभिनय करने वाले आकार वर्ग की कल्पना करें:
सार्वजनिक वर्ग आकार {
डबल एक्स, वाई;
सार्वजनिक आकार (डबल _x, डबल _y) { x = _x; वाई = _y; }
}
यह सभी आकृतियों के लिए सामान्य स्थिति को संभालता है क्योंकि यह कार्यक्षमता है जो वे सभी साझा करते हैं। अब मंडल वर्ग अपने माता-पिता को स्थिति प्रबंधन सौंप सकता है:
पब्लिक क्लास सर्किल आकार बढ़ाता है {
दोहरा त्रिज्या;
पब्लिक सर्कल (डबल आर) {सुपर (0, 0); त्रिज्या = आर; }
पब्लिक सर्कल (डबल एक्स, डबल वाई, डबल आर) {
सुपर (एक्स, वाई);
त्रिज्या = आर;
}
}
सुपरक्लास निर्माण का एक बहुत ही महत्वपूर्ण पहलू है जावा में विरासत. यदि आप स्पष्ट रूप से कॉल नहीं करते हैं तो भाषा डिफ़ॉल्ट रूप से इसे लागू करती है सुपर आपके कंस्ट्रक्टर्स में।
कंस्ट्रक्टर्स पर एक्सेस मॉडिफायर
कंस्ट्रक्टर अपने हस्ताक्षर में एक एक्सेस संशोधक शामिल कर सकते हैं। अन्य तरीकों की तरह, यह परिभाषित करता है कि किस प्रकार का कॉलर कंस्ट्रक्टर तक पहुंच सकता है:
पब्लिक क्लास टेस्ट {
निजी स्थैतिक परीक्षण अद्वितीय इंस्टेंस = नया टेस्ट ();
निजी परीक्षण () { }
सार्वजनिक स्थैतिक परीक्षण getInstance () {
अद्वितीय उदाहरण लौटाएं;
}
}
यह एक अधिक जटिल उदाहरण है, इसलिए इसे समझने का ध्यान रखें:
- वर्ग अमूर्त नहीं है, इसलिए इसे तत्काल करना संभव है।
- कंस्ट्रक्टर निजी है इसलिए केवल यह वर्ग ही एक नया उदाहरण बना सकता है।
- एक स्थिर संपत्ति और विधि के माध्यम से, वर्ग कॉल करने वालों के लिए अपने आप में एक एकल, अद्वितीय उदाहरण को उजागर करता है।
ऑब्जेक्ट बनाने के लिए जावा में कंस्ट्रक्टर्स का उपयोग करें
ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग के लिए कंस्ट्रक्टर महत्वपूर्ण हैं। वे आपको वस्तुओं को बनाने की अनुमति देते हैं, जो आवश्यक है!
जावा में, कंस्ट्रक्टर अन्य तरीकों की तरह दिखते हैं और उसी तरह से काम करते हैं। आपको डिफॉल्ट कंस्ट्रक्टर्स, ओवरलोडिंग और कंस्ट्रक्टर चेनिंग के विशेष नियमों को याद रखना चाहिए। यदि कंस्ट्रक्टर आपके लिए नए हैं, तो हो सकता है कि आप अन्य मुख्य जावा अवधारणाओं को पढ़ना चाहें जिन्हें आपको प्रारंभ करते समय सीखना चाहिए।
चाहे आप GUI लिख रहे हों, सर्वर-साइड सॉफ़्टवेयर विकसित कर रहे हों, या Android का उपयोग कर मोबाइल एप्लिकेशन बना रहे हों, जावा सीखना आपकी अच्छी सेवा करेगा। आरंभ करने में आपकी सहायता के लिए यहां कुछ प्रमुख जावा अवधारणाएं दी गई हैं।
आगे पढ़िए
- प्रोग्रामिंग
- जावा
- कोडिंग टिप्स
बॉबी एक प्रौद्योगिकी उत्साही हैं जिन्होंने दो दशकों तक एक सॉफ्टवेयर डेवलपर के रूप में काम किया। उन्हें गेमिंग का शौक है, स्विच प्लेयर मैगज़ीन में समीक्षा संपादक के रूप में काम कर रहे हैं, और ऑनलाइन प्रकाशन और वेब विकास के सभी पहलुओं में डूबे हुए हैं।
हमारे न्यूज़लेटर की सदस्यता
तकनीकी युक्तियों, समीक्षाओं, निःशुल्क ई-पुस्तकों और अनन्य सौदों के लिए हमारे न्यूज़लेटर से जुड़ें!
एक और क़दम…!
कृपया अपने ईमेल पते की पुष्टि उस ईमेल में करें जो हमने अभी आपको भेजी है।