यह सीधे एक abstract
वर्ग के निर्माता को फोन करके एक वस्तु बनाने के लिए संभव नहीं है की एक सार्वजनिक निर्माता के लिए अच्छा कारण हैं। abstract
वर्ग के निर्माता को केवल व्युत्पन्न कक्षा से ही बुलाया जा सकता है। इसलिए यह मेरे लिए लगता है कि एक अमूर्त वर्ग के निर्माताओं या तो protected
या पैकेज-निजी (पैकेज में व्युत्पन्न वर्ग के लिए एक निर्माता के उपयोग को प्रतिबंधित की असामान्य मामलों के लिए बाद)। फिर भी जावा abstract
वर्ग के निर्माता को public
होने की अनुमति देता है।वहाँ एक अमूर्त वर्ग
वहाँ किसी भी जिन परिस्थितियों में यह उपयोगी एक abstract
वर्ग के निर्माता की घोषणा करने के public
, बजाय protected
या पैकेज-निजी होने के लिए कर रहे हैं?
यह काफी सवाल का "Abstract class constructor access modifier" एक नकली नहीं है: स्पष्ट रूप से आप public
होने के लिए एक निर्माता घोषणा कर सकते हैं; मैं जानना चाहता हूं कि ऐसा करने के लिए कोई भी अच्छा है। ऐसा लगता है कि ऐसा नहीं है। मैं देखता हूं कि C# has a similar peculiarity।
कन्स्ट्रक्टर के पास ऑब्जेक्ट के "निर्माण" के साथ कुछ लेना देना नहीं है। यह केवल एक विधि है जिसे किसी वस्तु को "बनाने" के दौरान बुलाया जाता है। इस प्रकार, सार वर्ग में सार्वजनिक रचनाकार हो सकते हैं जिन्हें सार वर्ग (सबक्लास के माध्यम से) और उस कन्स्ट्रक्टर-विधि में उदाहरण बनाते समय कहा जाएगा, आप सदस्य चर को प्रारंभ करने के लिए कोड लिखेंगे। http://stackoverflow.com/questions/260666/can-an-abstract-class-have-a-constructor?lq=1 –
कन्स्ट्रक्टर भी 'निजी' हो सकते हैं, जिसका उपयोग कन्स्ट्रक्टर चेनिंग में किया जा सकता है। –