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

⚡ स्मार्ट सारांश

कन्स्ट्रक्टर ओवरलोडिंग Java यह एक क्लास को कई कंस्ट्रक्टर घोषित करने की अनुमति देता है जो पैरामीटर सूची के आधार पर भिन्न होते हैं, जिससे डेवलपर्स को लचीला ऑब्जेक्ट इनिशियलाइज़ेशन, this() के माध्यम से स्वच्छ कोड पुन: उपयोग और इंस्टैंशिएशन के समय डिफ़ॉल्ट या कस्टम मानों की आवश्यकता होने पर अनुमानित व्यवहार मिलता है।

  • 🏗️ परिभाषा: कन्स्ट्रक्टर ओवरलोडिंग Java यह एक ही क्लास में कई कंस्ट्रक्टरों की अनुमति देता है, जिन्हें पैरामीटरों की संख्या, प्रकार या क्रम के आधार पर अलग किया जाता है।
  • 🧩 लचीलापन: ओवरलोडेड कंस्ट्रक्टर अलग-अलग आर्गुमेंट सेट के साथ ऑब्जेक्ट को इनिशियलाइज़ करते हैं।
  • 🔀 जंजीर: this() और super() कीवर्ड सुरक्षित कंस्ट्रक्टर चेनिंग को सक्षम बनाते हैं।
  • चूक: यदि कोई पैरामीटराइज्ड कंस्ट्रक्टर मौजूद है, तो डिफ़ॉल्ट फ़ॉर्म घोषित किया जाना चाहिए।
  • 🧪 उदाहरण: Code नमूने वैध हस्ताक्षर और श्रृंखला व्यवहार प्रदर्शित करते हैं।

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

कंस्ट्रक्टर ओवरलोडिंग क्या है? Java?

कन्स्ट्रक्टर ओवरलोडिंग Java यह एक ऐसी तकनीक है जिसमें एक क्लास कई कंस्ट्रक्टर घोषित करती है जो पैरामीटर सूची में भिन्न होते हैं। कंपाइलर पैरामीटरों की संख्या और उनके डेटा प्रकारों का विश्लेषण करके इन कंस्ट्रक्टरों में अंतर करता है।

क्लास के लिए मान्य कंस्ट्रक्टरों के उदाहरण लेखा नीचे दिखाए गए हैं:

Account(int a);
Account (int a,int b);
Account (String a,int b);

हमें कंस्ट्रक्टर ओवरलोडिंग की आवश्यकता क्यों है? Java?

कन्स्ट्रक्टर ओवरलोडिंग Java यह एक क्लास में कई कंस्ट्रक्टरों की अनुमति देकर लचीलापन और कोड दक्षता में सुधार करता है, जिनमें से प्रत्येक में एक अलग पैरामीटर सूची होती है।

  • वस्तु निर्माण में लचीलापन: कंस्ट्रक्टर ओवरलोडिंग आपको पैरामीटर की संख्या या प्रकार के आधार पर विभिन्न तरीकों से ऑब्जेक्ट को इनिशियलाइज़ करने की अनुमति देता है।
  • Code पुनर्प्रयोग: आप एक कंस्ट्रक्टर से दूसरे कंस्ट्रक्टर को कॉल करके कंस्ट्रक्टर लॉजिक का पुन: उपयोग कर सकते हैं। यह() कीवर्ड।
  • बेहतर पठनीयता: ओवरलोडेड कंस्ट्रक्टर विभिन्न आरंभीकरण आवश्यकताओं के लिए विशिष्ट विकल्प प्रदान करके कोड को अधिक सहज बनाते हैं।
  • डिफ़ॉल्ट और कस्टम आरंभीकरण: कंस्ट्रक्टर ओवरलोडिंग आपको डिफ़ॉल्ट और कस्टम-आरंभित दोनों प्रकार की वस्तुओं को आसानी से बनाने की सुविधा देता है।

उदाहरण: कंस्ट्रक्टर ओवरलोडिंग Java

निम्नलिखित उदाहरण में कंस्ट्रक्टर ओवरलोडिंग को दर्शाया गया है। Java एक क्लास का उपयोग करते हुए जिसका नाम है डेमो.

चरण 1) संपादक में कोड टाइप करें.

class Demo{
      int  value1;
      int  value2;
      /*Demo(){
       value1 = 10;
       value2 = 20;
       System.out.println("Inside 1st Constructor");
     }*/
     Demo(int a){
      value1 = a;
      System.out.println("Inside 2nd Constructor");
    }
    Demo(int a,int b){
    value1 = a;
    value2 = b;
    System.out.println("Inside 3rd Constructor");
   }
   public void display(){
      System.out.println("Value1 === "+value1);
      System.out.println("Value2 === "+value2);
  }
  public static void main(String args[]){
    Demo d1 = new Demo();
    Demo d2 = new Demo(30);
    Demo d3 = new Demo(30,40);
    d1.display();
    d2.display();
    d3.display();
 }
}

चरण 2) कोड को सेव करें, कंपाइल करें और रन करें।

चरण 3) एक त्रुटि दिखाई दे रही है। कंस्ट्रक्टर ओवरलोडिंग के अगले चरण पर आगे बढ़ने से पहले त्रुटि को ठीक करने का प्रयास करें। Java.

चरण 4) हर क्लास का एक डिफ़ॉल्ट होता है कंस्ट्रक्टर इन Java. डिफ़ॉल्ट कंस्ट्रक्टर क्लास डेमो is डेमो()यदि आप इसे प्रदान नहीं करते हैं, तो कंपाइलर इसे आपके लिए बनाता है और वेरिएबल्स को डिफ़ॉल्ट मानों से इनिशियलाइज़ करता है।

हालाँकि, यदि आप पैरामीटरयुक्त कंस्ट्रक्टर निर्दिष्ट करते हैं जैसे डेमो(इंट ए) और डिफ़ॉल्ट का उपयोग करना चाहते हैं डेमो()इसका स्पष्ट रूप से उल्लेख करना अनिवार्य है।

चरण 5) कोड की लाइन 4-8 से कमेंट हटा दें, फिर प्रोग्राम को सेव करें, कंपाइल करें और दोबारा चलाकर व्यवहार में बदलाव देखें।

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

एक परिदृश्य पर विचार करें जहां एक बेस क्लास को चाइल्ड द्वारा विस्तारित किया जाता है। जब भी चाइल्ड क्लास का कोई ऑब्जेक्ट बनाया जाता है, तो पैरेंट क्लास का कंस्ट्रक्टर सबसे पहले बुलाया जाता है। इसे कहा जाता है कंस्ट्रक्टर चेनिंग.

उदाहरण: कंस्ट्रक्टर ओवरलोडिंग के साथ कंस्ट्रक्टर चेनिंग को समझने के लिए Java

चरण 1) निम्नलिखित कोड को संपादक में कॉपी करें।

class Demo{
   int  value1;
   int  value2;
    Demo(){
      value1 = 1;
      value2 = 2;
      System.out.println("Inside 1st Parent Constructor");
   }
   Demo(int a){
      value1 = a;
      System.out.println("Inside 2nd Parent Constructor");
   }
  public void display(){
     System.out.println("Value1 === "+value1);
     System.out.println("Value2 === "+value2);
  }
  public static void main(String args[]){
     DemoChild d1 = new DemoChild();
     d1.display();
  }
}
class DemoChild extends Demo{
    int value3;
    int value4;
    DemoChild(){
    //super(5);
     value3 = 3;
     value4 = 4;
    System.out.println("Inside the Constructor of Child");
    }
    public void display(){
      System.out.println("Value1 === "+value1);
      System.out.println("Value2 === "+value2);
      System.out.println("Value1 === "+value3);
      System.out.println("Value2 === "+value4);
   }
}

चरण 2) कोड चलाएँ। कंस्ट्रक्टर चेनिंग के कारण, जब चाइल्ड क्लास का ऑब्जेक्ट डेमोचाइल्ड बनाया जाता है, कंस्ट्रक्टर डेमो() पैरेंट क्लास का कंस्ट्रक्टर पहले कॉल किया जाता है। डेमोचाइल्ड() बच्चा आगे दौड़ता है।

अपेक्षित उत्पादन:

Inside 1st Parent Constructor
Inside the Constructor of Child
Value1 === 1
Value2 === 2
Value1 === 3
Value2 === 4

चरण 3) आप देख सकते हैं कि पैरेंट कंस्ट्रक्टर डेमो() यह डिफ़ॉल्ट रूप से चलता है। ओवरलोडेड कंस्ट्रक्टर को कॉल करने के लिए। डेमो(इंट ए) इसके बजाय, कीवर्ड का उपयोग करें "उत्तम".

सिंटेक्स:

super();
--or--
super(parameter list);

उदाहरण: यदि आपका पैरेंट कंस्ट्रक्टर इस प्रकार है डेमो(स्ट्रिंग नाम, इंट ए), आप निर्दिष्ट करेंगे बहुत अच्छा("Java”,5)यदि उपयोग किया जाता है, तो कीवर्ड सुपर यह चाइल्ड क्लास के कंस्ट्रक्टर में कोड की पहली पंक्ति होनी चाहिए।

चरण 4) पंक्ति 26 से टिप्पणी हटाएँ और कोड चलाएँ। आउटपुट देखें।

आउटपुट:

Inside 2nd Parent Constructor
Inside the Constructor of Child
Value1 === 5
Value2 === 0
Value1 === 3
Value2 === 4

अक्सर पूछे जाने वाले प्रश्न

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

A Java कंस्ट्रक्टर का नाम उसकी क्लास के नाम के समान होना चाहिए और उसे कोई रिटर्न टाइप घोषित नहीं करना चाहिए, यहां तक ​​कि वॉइड भी नहीं। कंस्ट्रक्टर ओवरलोडिंग Java यह एक ही क्लास के भीतर कई कंस्ट्रक्टर घोषणाओं में पैरामीटर की संख्या, प्रकार या क्रम को बदलकर प्राप्त किया जाता है।

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

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

हां, एआई कोडिंग सहायक कंस्ट्रक्टर ओवरलोडिंग उत्पन्न कर सकते हैं। Java प्राकृतिक भाषा संकेतों या क्लास आरेखों से। वे कंस्ट्रक्टर सिग्नेचर उत्पन्न करते हैं, this() के साथ डेलीगेट लॉजिक बनाते हैं, और जोड़ते हैं। Javaदस्तावेज़ टिप्पणियाँ, जो बॉयलरप्लेट निर्माण को गति प्रदान करती हैं, साथ ही डेवलपर्स द्वारा शुद्धता और परियोजना परंपराओं की समीक्षा की आवश्यकता भी बनी रहती है।

एआई उपकरण मौजूदा क्लासों का विश्लेषण कर सकते हैं और कंस्ट्रक्टर ओवरलोडिंग के रिफैक्टरिंग की सिफारिश कर सकते हैं। Java अनावश्यक कंस्ट्रक्टरों को मर्ज करके, बिल्डर पैटर्न पेश करके, या पूर्वtracआरंभिकरण में सहायता करने वाले टूल। ये अस्पष्ट ओवरलोड को उजागर करते हैं, पैरामीटर का नाम बदलने का सुझाव देते हैं, और कंस्ट्रक्टर डिज़ाइन को अपरिवर्तनीयता और निर्भरता इंजेक्शन जैसे पैटर्न के साथ संरेखित करते हैं।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: