क्या आपको जावा उपवर्गों में सुपरक्लास कंस्ट्रक्टर को स्पष्ट रूप से कॉल करना चाहिए?
एक उपवर्ग को परिभाषित करते समय, ऐसे कंस्ट्रक्टरों को देखना आम बात है जो स्पष्ट रूप से कॉल करते हैं सुपर() का उपयोग करके सुपरक्लास कंस्ट्रक्टर। हालाँकि, कोई यह सवाल कर सकता है कि क्या यह आवश्यक है। कंस्ट्रक्टर, कंपाइलर स्वचालित रूप से सुपरक्लास में सुलभ नो-आर्ग्यूमेंट कंस्ट्रक्टर (नो-आर्ग्स कंस्ट्रक्टर) को कॉल करेगा। इस डिफ़ॉल्ट व्यवहार को
कंस्ट्रक्टर चेनिंगके रूप में जाना जाता है।
कंस्ट्रक्टर के प्रकारनो-आर्ग्स कंस्ट्रक्टर: बिना पैरामीटर वाला एक कंस्ट्रक्टर।
सुपरक्लास में एक सुलभ नो-आर्ग्स कंस्ट्रक्टर नहीं है।
उपवर्ग कंस्ट्रक्टर में पैरामीटर शामिल होते हैं, ऐसी स्थिति में इसे स्पष्ट रूप से सुपरक्लास में एक कंस्ट्रक्टर को कॉल करना होगा जो उन्हें स्वीकार करता है पैरामीटर।सुपर() के लिए कोई स्पष्ट कॉल की आवश्यकता नहीं है क्योंकि बेस में एक डिफ़ॉल्ट कंस्ट्रक्टर है।
public class Base {}
public class Derived extends Base {}
पब्लिक क्लास बेस { सार्वजनिक आधार(int i) {} } सार्वजनिक वर्ग व्युत्पन्न आधार का विस्तार करता है { सार्वजनिक व्युत्पन्न(int i) { सुपर(i); // स्पष्ट रूप से Base(int) कंस्ट्रक्टर को कॉल करें } }
इस मामले में, सुपर(i) आवश्यक है क्योंकि सुपरक्लास में नो-आर्ग्स कंस्ट्रक्टर नहीं है, और उपक्लास कंस्ट्रक्टर को अपने i पैरामीटर के लिए प्रारंभिक मान प्रदान करने की आवश्यकता है।
इन अवधारणाओं को समझकर, आप अनावश्यक सुपर() कॉल से बच सकते हैं और अपने उपवर्गों में उचित कंस्ट्रक्टर चेनिंग सुनिश्चित कर सकते हैं।अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3