जावा में, यदि आप Child Class
का उदाहरण बनाते हैं, तो Parent Class
उदाहरण अंतर्निहित रूप से बनाया जाता है। तो चाइल्ड क्लास कन्स्ट्रक्टर Child Class
पर दिखाई दे सकता है क्योंकि यह पहले ही कथन में super()
का उपयोग कर Parent Class
कन्स्ट्रक्टर के निर्माता को कॉल करता है।
तो अगर आप private
करने के लिए Parent Class
के निर्माता बदलने के लिए, Child Class
उस तक पहुँच सकता है और अपने स्वयं के के किसी भी मामले नहीं बना सका, इसलिए सबसे पहले हाथ पर संकलक बस सब पर इस अनुमति नहीं है।
लेकिन अगर आप Parent Class
में private
डिफ़ॉल्ट निर्माता चाहते हैं, तो आप स्पष्ट रूप से Child class
निर्माता में तो Parent Class
& में एक ओवरलोड public
निर्माता बनाने के लिए आप super(param)
Parent Class
की सार्वजनिक अतिभारित निर्माता का उपयोग कर कॉल करने की आवश्यकता की जरूरत है।
इसके अलावा, आपको लगता है कि private
रचनाकारों का उपयोग क्या है। private
कन्स्ट्रक्टर का अधिकतर उपयोग तब किया जाता है जब आप किसी अन्य कक्षा से दूसरों को अपनी कक्षा में new()
पर कॉल नहीं करना चाहते हैं। तो उस स्थिति में, हम कक्षा object
प्रदान करने के लिए कुछ getter()
विधि प्रदान करते हैं। उस विधि में आप अपनी कक्षा & के मौजूदा ऑब्जेक्ट को बना/उपयोग कर सकते हैं, इसे उस विधि से वापस कर सकते हैं।
ईजी। Calendar cal = Calendar.getInstance();
। यह वास्तव में Singleton
डिज़ाइन पैटर्न का आधार बनाता है।
स्रोत
2015-07-03 11:53:02
(आपके अंतिम प्रश्न का उत्तर "हां" है, बशर्ते आपका मतलब "अंतिम" है, "इसे उप-वर्गीकृत नहीं किया जा सकता"। इसे (शायद, मुझे लगता है) माना जाना चाहिए कि संकलक भी स्पॉट करेगा यह और क्लास ए का बिल्कुल वैसा ही व्यवहार करता है जैसे कि इसे स्पष्ट रूप से "अंतिम" घोषित किया गया था।) –
[लागू सुपर कन्स्ट्रक्टर क्लास ए) को हल करने के लिए संभावित डुप्लिकेट दिखाई नहीं दे रहा है। स्पष्ट रूप से एक और कन्स्ट्रक्टर का आह्वान करना चाहिए?] (Http://stackoverflow.com/questions/3904355/how-to-resolve-implicit-super-constructor-classa-is-not-visible-must-explici) – Raedwald