जावा में कंस्ट्रक्टर ओवरलोडिंग: क्या & कार्यक्रम के उदाहरण

विषय - सूची:

Anonim

जावा में कंस्ट्रक्टर क्या है?

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

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

  • संख्यात्मक डेटा प्रकार 0 पर सेट हैं
  • चार प्रकार के डेटा को शून्य वर्ण में सेट किया जाता है ('\ 0')
  • संदर्भ चर शून्य पर सेट हैं

इस ट्यूटोरियल में, आप सीखेंगे-

  • कंस्ट्रक्टर बनाने के नियम
  • जावा में कंस्ट्रक्टर ओवरलोडिंग
  • बनानेवाला

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

  1. इसका एक ही नाम है वर्ग
  2. यह एक मान भी नहीं शून्य नहीं लौटना चाहिए

उदाहरण 1 : जावा में अपना पहला कंस्ट्रक्टर बनाएं

चरण 1) जावा एडिटर में निम्नलिखित कंस्ट्रक्टर प्रोग्राम टाइप करें।

class Demo{int value1;int value2;Demo(){value1 = 10;value2 = 20;System.out.println("Inside Constructor");}public void display(){System.out.println("Value1 === "+value1);System.out.println("Value2 === "+value2);}public static void main(String args[]){Demo d1 = new Demo();d1.display();}}

चरण 2) जावा में कंस्ट्रक्टर प्रोग्राम को सहेजें, चलाएँ और संकलित करें और आउटपुट देखें।

आउटपुट:

Inside ConstructorValue1 === 10Value2 === 20

जावा में कंस्ट्रक्टर ओवरलोडिंग

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

वर्ग खाता के लिए वैध निर्माणकर्ताओं के उदाहरण हैं

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

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

चरण 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) त्रुटि =। कोशिश करें और जावा कंस्ट्रक्टर ओवरलोडिंग के अगले चरण पर आगे बढ़ने से पहले त्रुटि को डीबग करें

चरण 4) जावा में हर वर्ग का डिफ़ॉल्ट कंस्ट्रक्टर है। के लिए डिफ़ॉल्ट अतिभारित निर्माता जावा वर्ग डेमो है डेमो () । यदि आप इस निर्माता को प्रदान नहीं करते हैं तो संकलक आपके लिए इसे बनाता है और चर को डिफ़ॉल्ट मानों पर आरंभ करता है। आप इस डिफॉल्ट कंस्ट्रक्टर को ओवरराइड करने के लिए चुन सकते हैं और चर को अपने इच्छित मानों में आरंभ कर सकते हैं जैसा कि उदाहरण 1 में दिखाया गया है।

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

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

चरण 5) Uncomment line # 4-8। कोड सहेजें, संकलित करें और चलाएँ।

बनानेवाला

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

उदाहरण 3: कंस्ट्रक्टर चेनिंग को समझना

चरण 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 ConstructorInside the Constructor of ChildValue1 === 1Value2 === 2Value1 === 3Value2 === 4

चरण 3) आप देख सकते हैं कि पैरेंट क्लास डेमो का निर्माण ओवरराइड है। क्या होगा यदि आप अपने बच्चे के ऑब्जेक्ट के निर्माण के दौरान डिफॉल्ट कंस्ट्रक्टर डेमो () के बजाय ओवरराइड कंस्ट्रक्टर डेमो (int) को कॉल करना चाहते हैं?

ऐसे मामलों में, आप मूल श्रेणी के ओवरराइड कंस्ट्रक्टर्स को कॉल करने के लिए "सुपर" कीवर्ड का उपयोग कर सकते हैं ।

वाक्य - विन्यास:-

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

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

चरण 4) Uncomment Line # 26 और कोड चलाएं। आउटपुट का निरीक्षण करें।

आउटपुट:

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