जावा में एक कंस्ट्रक्टर क्या है और आप इसका उपयोग कैसे करते हैं?

जावा में एक कंस्ट्रक्टर क्या है और आप इसका उपयोग कैसे करते हैं?

ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में, कंस्ट्रक्टर एक विशेष फ़ंक्शन होता है जिसे आप ऑब्जेक्ट बनाने के लिए कहते हैं। कंस्ट्रक्टर्स में कई अनूठी विशेषताएं होती हैं जो उन्हें काम करने में सक्षम बनाती हैं।





जावा में, आप एक कंस्ट्रक्टर को उसकी कक्षा के नाम पर रखते हैं। एक कंस्ट्रक्टर एक विधि है, जिसे उस वर्ग में परिभाषित किया जाता है जिस पर वह लागू होता है। जावा कंस्ट्रक्टर वैकल्पिक व्यवहार प्रदान करने के लिए ओवरलोडिंग का उपयोग कर सकते हैं। जावा में कंस्ट्रक्टर कोड का पुन: उपयोग करने के लिए इनहेरिटेंस का भी उपयोग कर सकते हैं।





आपको वैसे भी कंस्ट्रक्टर्स की आवश्यकता क्यों है?

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





public class Circle {
public double radius;
public double area() { return 3.14159 * radius * radius; }
}

फिर आप इस वर्ग का एक उदाहरण बना सकते हैं और इसके साथ बातचीत कर सकते हैं:

Circle c = new Circle();
c.radius = 2;
System.out.println(c.area()); // 12.56636

लेकिन यह जितना हो सकता है उससे कम सुविधाजनक और मजबूत है। डेटा को इनकैप्सुलेट करना, इसे अनधिकृत पहुंच से बचाना एक अच्छा ऑब्जेक्ट-ओरिएंटेड अभ्यास है:



public class Circle {
private double radius;
public double area() { return 3.14159 * radius * radius; }
public void setRadius(double r) { radius = r; }
}

अब कॉलिंग कोड का उपयोग कर सकते हैं सेटरेडियस विधि और इसके कार्यान्वयन विवरण के बारे में चिंता करने की ज़रूरत नहीं है:

क्या यह ps4 खरीदने लायक है?
Circle c = new Circle();
c.setRadius(2);

जब आप इसे बनाते हैं तो कंस्ट्रक्टर किसी ऑब्जेक्ट को डेटा की आपूर्ति करने का एक बेहतर तरीका प्रदान करते हैं। वे अक्सर गुणों के आरंभीकरण के लिए उपयोग किए जाते हैं, जैसे कि RADIUS यहां।





सरल कंस्ट्रक्टर्स के उदाहरण

सबसे बुनियादी कंस्ट्रक्टर वह है जिसमें कोई तर्क नहीं है, जो कुछ भी नहीं करता है:

public class Circle {
public Circle() {}
}

यह सभी देखें: जावा में कक्षाएं बनाना सीखें





यदि आप एक कंस्ट्रक्टर को परिभाषित नहीं करते हैं, तो जावा एक डिफ़ॉल्ट प्रदान करेगा जो उसी तरह व्यवहार करता है।

कुछ बातों पर ध्यान दें:

  1. कंस्ट्रक्टर का नाम वर्ग के नाम से मेल खाता है।
  2. यह कंस्ट्रक्टर का उपयोग करता है सह लोक एक्सेस संशोधक, इसलिए कोई अन्य कोड इसे कॉल कर सकता है।
  3. एक कंस्ट्रक्टर में रिटर्न टाइप शामिल नहीं होता है। अन्य विधियों के विपरीत, कंस्ट्रक्टर एक मान वापस नहीं कर सकते।

कंस्ट्रक्टर आमतौर पर किसी तरह का इनिशियलाइज़ेशन करते हैं। ध्यान दें कि उपरोक्त कोड त्रिज्या के मान को प्रारंभ नहीं करता है। इस मामले में, भाषा स्वचालित रूप से इसे शून्य पर सेट कर देगी। यह वर्ग उपयोगकर्ता से उपयोग करने की अपेक्षा करता है सेटरेडियस () . 0 से अधिक उपयोगी डिफ़ॉल्ट का उपयोग करने के लिए, आप इसे कंस्ट्रक्टर के भीतर असाइन कर सकते हैं:

public class Circle {
public Circle() { radius = 1; }
}

इस वर्ग के साथ बनाई गई मंडलियों का कम से कम अब एक वास्तविक क्षेत्र होगा! कॉलर अभी भी उपयोग कर सकता है सेटरेडियस () 1 के अलावा एक त्रिज्या प्रदान करने के लिए। लेकिन कंस्ट्रक्टर और भी मित्रवत हो सकता है:

public class Circle {
public Circle(double r) { radius = r; }
}

अब आप जन्म से ही एक विशिष्ट दायरे के साथ मंडलियां बना सकते हैं:

आप फेसबुक लाइव नोटिफिकेशन कैसे बंद करते हैं
Circle c = new Circle(2);
System.out.println(c.area()); // 12.56636

यह कंस्ट्रक्टर्स के लिए एक बहुत ही सामान्य उपयोग है। आप अक्सर उनका उपयोग चर को पैरामीटर मानों में प्रारंभ करने के लिए करेंगे।

कंस्ट्रक्टर ओवरलोडिंग

आप एक वर्ग परिभाषा में एक से अधिक कंस्ट्रक्टर निर्दिष्ट कर सकते हैं:

public Circle() { radius = 1; }
public Circle(double r) { radius = r; }

यह कॉलिंग कोड को वस्तुओं के निर्माण का विकल्प देता है:

Circle c1 = new Circle(2);
Circle c2 = new Circle();
System.out.println(c1.area() + ', ' + c2.area()); // 12.56636, 3.14159

थोड़े अधिक जटिल सर्कल के साथ, आप अधिक दिलचस्प कंस्ट्रक्टरों का पता लगा सकते हैं। यह संस्करण अपनी स्थिति संग्रहीत करता है:

public class Circle {
public double x, y, radius;
public Circle() { radius = r; }
public Circle(double r) { radius = r; }
public Circle(double x, double y, double r) {
this.x = x; this.y = y; radius = r;
}

public double area() { return 3.14159 * radius * radius; }
}

अब आप बिना किसी तर्क के एक वृत्त बना सकते हैं, एक एकल त्रिज्या, या त्रिज्या के साथ x और y निर्देशांक। यह उसी तरह का ओवरलोडिंग है जो जावा किसी भी तरीके के लिए सपोर्ट करता है।

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

एक सर्कल को दूसरे के आधार पर बनाने के बारे में कैसे? यह हमें मंडलियों को आसानी से कॉपी करने की क्षमता देगा। निम्नलिखित ब्लॉक का निरीक्षण करें:

public Circle(Circle c) {
this.x = c.x;
this.y = c.y;
this.radius = c.radius;
}

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

public Circle(Circle c) {
this(c.x, c.y, c.radius);
}

यह कंस्ट्रक्टर चेनिंग का एक रूप है, एक कंस्ट्रक्टर को दूसरे से कॉल करना। यह कम कोड का उपयोग करता है और एक ऑपरेशन को डुप्लिकेट करने के बजाय केंद्रीकृत करने में मदद करता है।

पेरेंट कंस्ट्रक्टर को कॉल करना

कंस्ट्रक्टर चेनिंग का दूसरा रूप तब होता है जब एक कंस्ट्रक्टर अपने पैरेंट क्लास के कंस्ट्रक्टर को कॉल करता है। यह या तो स्पष्ट या निहित हो सकता है। पैरेंट कंस्ट्रक्टर को स्पष्ट रूप से कॉल करने के लिए, का उपयोग करें उत्तम कीवर्ड:

super(x, y);

सर्कल के माता-पिता के रूप में अभिनय करने वाले आकार वर्ग की कल्पना करें:

public class Shape {
double x, y;
public Shape(double _x, double _y) { x = _x; y = _y; }
}

यह सभी आकृतियों के लिए सामान्य स्थिति को संभालता है क्योंकि यह कार्यक्षमता है जो वे सभी साझा करते हैं। अब मंडल वर्ग अपने माता-पिता को स्थिति प्रबंधन सौंप सकता है:

public class Circle extends Shape {
double radius;
public Circle(double r) { super(0, 0); radius = r; }
public Circle(double x, double y, double r) {
super(x, y);
radius = r;
}
}

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

कंस्ट्रक्टर्स पर एक्सेस मॉडिफायर

कंस्ट्रक्टर अपने हस्ताक्षर में एक एक्सेस संशोधक शामिल कर सकते हैं। अन्य तरीकों की तरह, यह परिभाषित करता है कि किस प्रकार का कॉलर कंस्ट्रक्टर तक पहुंच सकता है:

public class Test {
private static Test uniqueInstance = new Test();
private Test() { }
public static Test getInstance() {
return uniqueInstance;
}
}

यह एक अधिक जटिल उदाहरण है, इसलिए इसे समझने का ध्यान रखें:

  • वर्ग अमूर्त नहीं है, इसलिए इसे तत्काल करना संभव है।
  • कंस्ट्रक्टर निजी है इसलिए केवल यह वर्ग ही एक नया उदाहरण बना सकता है।
  • एक स्थिर संपत्ति और विधि के माध्यम से, वर्ग कॉल करने वालों के लिए अपने आप में एक एकल, अद्वितीय उदाहरण को उजागर करता है।

ऑब्जेक्ट बनाने के लिए जावा में कंस्ट्रक्टर्स का उपयोग करें

ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग के लिए कंस्ट्रक्टर महत्वपूर्ण हैं। वे आपको वस्तुओं को बनाने की अनुमति देते हैं, जो आवश्यक है!

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

साझा करना साझा करना कलरव ईमेल 10 मुख्य जावा अवधारणाएं जो आपको आरंभ करते समय सीखनी चाहिए

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

आगे पढ़िए
संबंधित विषय
  • प्रोग्रामिंग
  • जावा
  • कोडिंग टिप्स
लेखक के बारे में बॉबी जैक(58 लेख प्रकाशित)

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

क्या इच्छा से ऑर्डर करना सुरक्षित है
बॉबी जैक . की अन्य फ़िल्में-टीवी शो

हमारे न्यूज़लेटर की सदस्यता लें

तकनीकी युक्तियों, समीक्षाओं, निःशुल्क ई-पुस्तकों और अनन्य सौदों के लिए हमारे न्यूज़लेटर से जुड़ें!

सब्सक्राइब करने के लिए यहां क्लिक करें