"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > क्या जावा उपवर्गों को हमेशा सुपरक्लास कंस्ट्रक्टर को स्पष्ट रूप से कॉल करने की आवश्यकता होती है?

क्या जावा उपवर्गों को हमेशा सुपरक्लास कंस्ट्रक्टर को स्पष्ट रूप से कॉल करने की आवश्यकता होती है?

2024-11-09 को प्रकाशित
ब्राउज़ करें:743

Do Java Subclasses Always Need to Explicitly Call the Superclass Constructor?

क्या आपको जावा उपवर्गों में सुपरक्लास कंस्ट्रक्टर को स्पष्ट रूप से कॉल करना चाहिए?

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

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

के रूप में जाना जाता है।

कंस्ट्रक्टर के प्रकार

नो-आर्ग्स कंस्ट्रक्टर: बिना पैरामीटर वाला एक कंस्ट्रक्टर।

    सुलभ नो-आर्ग कंस्ट्रक्टर:
  • सुपरक्लास में एक नो-आर्ग्स कंस्ट्रक्टर जो उपवर्ग (सार्वजनिक, संरक्षित, या पैकेज-निजी) के लिए दृश्यमान है।
  • डिफ़ॉल्ट कंस्ट्रक्टर:
  • सार्वजनिक नो-आर्ग्स कंपाइलर द्वारा कंस्ट्रक्टर तब जोड़ा जाता है जब क्लास में कोई स्पष्ट कंस्ट्रक्टर नहीं होता है।
  • सुपर() कब होता है आवश्यक?
  • सुपर() का स्पष्ट रूप से उपयोग करना केवल तभी आवश्यक है यदि:

सुपरक्लास में एक सुलभ नो-आर्ग्स कंस्ट्रक्टर नहीं है।

उपवर्ग कंस्ट्रक्टर में पैरामीटर शामिल होते हैं, ऐसी स्थिति में इसे स्पष्ट रूप से सुपरक्लास में एक कंस्ट्रक्टर को कॉल करना होगा जो उन्हें स्वीकार करता है पैरामीटर।

  • उदाहरण 1:
पब्लिक क्लास बेस {} सार्वजनिक वर्ग व्युत्पन्न बेस का विस्तार करता है {}

सुपर() के लिए कोई स्पष्ट कॉल की आवश्यकता नहीं है क्योंकि बेस में एक डिफ़ॉल्ट कंस्ट्रक्टर है।

public class Base {}
public class Derived extends Base {}

पब्लिक क्लास बेस { सार्वजनिक आधार(int i) {} } सार्वजनिक वर्ग व्युत्पन्न आधार का विस्तार करता है { सार्वजनिक व्युत्पन्न(int i) { सुपर(i); // स्पष्ट रूप से Base(int) कंस्ट्रक्टर को कॉल करें } }

इस मामले में, सुपर(i) आवश्यक है क्योंकि सुपरक्लास में नो-आर्ग्स कंस्ट्रक्टर नहीं है, और उपक्लास कंस्ट्रक्टर को अपने i पैरामीटर के लिए प्रारंभिक मान प्रदान करने की आवश्यकता है।

इन अवधारणाओं को समझकर, आप अनावश्यक सुपर() कॉल से बच सकते हैं और अपने उपवर्गों में उचित कंस्ट्रक्टर चेनिंग सुनिश्चित कर सकते हैं।
            
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3