कंस्ट्रक्टर चेनिंग क्या है?
जावा में एक कंस्ट्रक्टर एक विशिष्ट विधि है जिसका उपयोग किसी वर्ग के ऑब्जेक्ट निर्माण में किया जाता है। कंस्ट्रक्टर को हर बार क्लास का एक ऑब्जेक्ट बनाया जाता है। इसका उपयोग निर्माण के समय वस्तु के गुणों को मान निर्दिष्ट करने के लिए किया जा सकता है। जावा क्लास में विभिन्न पैरामीटर सूचियों के साथ कई कंस्ट्रक्टर हो सकते हैं। कंस्ट्रक्टर चेनिंग का उपयोग ऑब्जेक्ट निर्माण समय पर एक ही वर्ग / मूल वर्ग के कंस्ट्रक्टरों के विभिन्न कार्यान्वयनों को लागू करने के लिए किया जाता है।
जावा में कन्स्ट्रक्टर चेनिंग कैसे कार्यान्वित की जाती है?
कंस्ट्रक्टर को कॉल करने के तरीके के आधार पर कंस्ट्रक्टर को चेन करने के दो तरीके हैं। वे इस प्रकार हैं।
- इस () कीवर्ड का उपयोग करके - एक ही वर्ग के कंस्ट्रक्टर्स को कॉल करने के लिए
- सुपर () कीवर्ड का उपयोग - पैरेंट क्लास के कंस्ट्रक्टर्स को कॉल करने के लिए
इसे निम्नलिखित उदाहरणों में समझाया गया है।
कंस्ट्रक्टर चेनिंग उदाहरण # 1 - कंस्ट्रक्टर इस () कीवर्ड का उपयोग करके जंजीर में बंधे हैं
हमने DerivedClass के लिए चार कंस्ट्रक्टर घोषित किए हैं। एक बिना किसी तर्क के और अन्य तीन अलग-अलग तर्कों के साथ। प्रत्येक कंस्ट्रक्टर के अंदर,
इस () कीवर्ड का उपयोग उसी वर्ग के अगले कंस्ट्रक्टर को कॉल करने के लिए किया जाता है।
package com.tutorialwriting.constchaining;
public class DerivedClass{
String firstName;
String country;
int age;
public DerivedClass() {
this("Maggie");
}
public DerivedClass(String firstName) {
this(firstName, 15);
}
public DerivedClass(String firstName, int age) {
this(firstName, age, "Australia");
}
public DerivedClass(String firstName, int age, String country) {
this.firstName = firstName;
this.age = age;
this.country = country;
}
void displayValues() {
System.out.println("First Name : " + firstName);
System.out.println("Country : " + country);
System.out.println("Age : " + age);
}
public static void main(String args[]) {
DerivedClass object = new DerivedClass();
object.displayValues();
}
}
निष्पादन का आउटपुट
कंस्ट्रक्टर श्रृंखलन उदाहरण #2 - कंस्ट्रक्टर्स को सुपर () कीवर्ड का उपयोग करके श्रृंखलित किया जाता है
यहां, चाइल्ड क्लास सुपर () कीवर्ड का उपयोग करके पैरेंट क्लास के कंस्ट्रक्टर्स को कॉल करता है । बेसक्लास में तीन कंस्ट्रक्टर हैं। बिना किसी तर्क के निर्माता
इस() का उपयोग करके बेस क्लास के तीन-तर्क-निर्माता में से एक को कॉल करता है ।
package com.tutorialwriting.constchaining;
public class BaseClass {
public BaseClass() {
this("Male", "English", "1989/11/10");
System.out.println("I'm executed third!!!");
}
public BaseClass(String firstName, String surname, int idNo) {
System.out.println("I'm executed first!");
System.out.println("First name : " + firstName);
System.out.println("Surname : " + surname);
System.out.println("ID Number : " + idNo);
}
public BaseClass(String gender, String nationality, String birthDate) {
System.out.println("I'm executed second!!");
System.out.println("Gender : " + gender);
System.out.println("Nationality : " + nationality);
System.out.println("Birth Date : " + birthDate);
}
}
DerivedClass में दो कंस्ट्रक्टर हैं, जिनमें से प्रत्येक सुपर क्लास के अलग-अलग कंस्ट्रक्टर्स को
सुपर () का उपयोग करके कॉल करता है ।
package com.tutorialwriting.constchaining;
public class DerivedClass extends BaseClass {
public DerivedClass() {
super();
}
public DerivedClass(String firstName, String surname, int idNo) {
super(firstName, surname, idNo);
}
public static void main(String args[]) {
DerivedClass object2 = new DerivedClass("Paul", "Wilson", 123456);
DerivedClass object1 = new DerivedClass();
}
}
निष्पादन का आउटपुट
अंतर्निहित बनाम स्पष्ट कन्स्ट्रक्टर कॉलिंग
जावा में कंस्ट्रक्टर को कॉल करने के दो अलग-अलग तरीके हैं: इम्प्लिक्ट कॉलिंग और एक्सप्लिसिट कॉलिंग।
- स्पष्ट कॉलिंग इस() या सुपर() का उपयोग कर कोड में स्पष्ट रूप से कन्स्ट्रक्टर को कॉल करने के लिए संदर्भित करती है ।
- इंप्लिक्ट कॉलिंग का तात्पर्य सुपर क्लास के नो-तर्क कंस्ट्रक्टर को चाइल्ड क्लास कंस्ट्रक्टर से इस तरह के स्पष्ट कॉल की अनुपस्थिति में निहित रूप से कॉल करना है। दूसरे शब्दों में, यदि प्रोग्रामर स्पष्ट रूप से कोड में सुपर () कॉल नहीं करता है, तो कंपाइलर बाल वर्ग के किसी भी निर्माता की पहली पंक्ति के रूप में सुपर () कॉल जोड़ता है।
हमें कन्स्ट्रक्टर चेनिंग की आवश्यकता क्यों है?
जावा में कन्स्ट्रक्टर श्रृंखला होने के कई अलग-अलग उद्देश्य हैं, जैसा कि नीचे सूचीबद्ध है।
- यह अन्य कंस्ट्रक्टर्स के गुणों या मूल वर्गों के गुणों तक पहुँचने का एक तरीका है।
- अन्य कंस्ट्रक्टर्स को कॉल करते समय, केवल एक ऑब्जेक्ट का उपयोग किया जा रहा है, जो क्लास का वर्तमान उदाहरण है। इनिशियलाइज़ेशन एक ही स्थान पर होता है, लेकिन हमारे पास एक श्रृंखला के माध्यम से विभिन्न कंस्ट्रक्टर कार्यान्वयनों को कॉल करने का विशेषाधिकार है। यह मेमोरी मैनेजमेंट और कोड मेंटेनेंस में काफी मदद करता है।
निष्कर्ष
इस ट्यूटोरियल में, हमने जावा में कंस्ट्रक्टर चेनिंग पर चर्चा की। कंस्ट्रक्टर मेथड-जैसे कोड सेगमेंट होते हैं जिन्हें ऑब्जेक्ट बनाते समय लागू किया जाता है। जावा क्लास में विभिन्न पैरामीटर सूचियों के साथ कई कंस्ट्रक्टर हो सकते हैं। कन्स्ट्रक्टर चेनिंग कक्षा के एक उदाहरण के साथ विभिन्न प्रारंभिकताओं को संभालने का एक आसान तरीका है। इस ट्यूटोरियल से नोट किए जाने वाले कुछ महत्वपूर्ण बिंदु नीचे सूचीबद्ध हैं।
- यदि प्रोग्रामर इसे स्पष्ट रूप से कोड में नहीं जोड़ता है, तो कंपाइलर जावा क्लास में एक सार्वजनिक नो-तर्क कंस्ट्रक्टर जोड़ता है। इसे डिफॉल्ट कंस्ट्रक्टर कहा जाता है।
- यह () और सुपर () को कंस्ट्रक्टर की पहली पंक्ति के रूप में लिखा जाना चाहिए।
- this() का उपयोग उसी वर्ग के कंस्ट्रक्टर्स को कॉल करने के लिए किया जाता है जबकि सुपर() का उपयोग तत्काल सुपर क्लास के कंस्ट्रक्टर्स को कॉल करने के लिए किया जाता है।
- क्लास में कम से कम एक कंस्ट्रक्टर होना चाहिए जिसमें यह () कीवर्ड न हो।
- यदि स्पष्ट रूप से नहीं जोड़ा गया है, तो कंपाइलर प्रत्येक चाइल्ड क्लास कंस्ट्रक्टर के लिए एक नो-तर्क सुपर () कॉल जोड़ता है। यह कक्षाओं की तात्कालिकता को सही ढंग से मदद करेगा।