रचनाकार विरासत योग्य नहीं हैं क्योंकि इससे अजीब और अनजान व्यवहार हो सकता है। अधिक विशेष रूप से, यदि आपने बेस क्लास में नया कन्स्ट्रक्टर जोड़ा है, तो सभी व्युत्पन्न कक्षाएं उस कन्स्ट्रक्टर का एक उदाहरण प्राप्त करती हैं। कुछ मामलों में यह एक बुरी चीज है, क्योंकि शायद आपकी बेस क्लास पैरामीटर निर्दिष्ट करती है जो आपके व्युत्पन्न वर्गों के लिए समझ में नहीं आती हैं।
इसके लिए एक सामान्य उदाहरण यह है कि कई भाषाओं में, सभी वस्तुओं (आमतौर पर "ऑब्जेक्ट" कहा जाता है) के लिए बेस क्लास में कोई पैरामीटर नहीं होता है। यदि रचनाकारों को विरासत में मिला, तो इसका मतलब यह होगा कि सभी वस्तुओं में पैरामीटर रहित कन्स्ट्रक्टर होता है, और कहने का कोई तरीका नहीं है "मैं ऐसे लोगों को चाहता हूं जो पैरामीटर एक्स, वाई और जेड प्रदान करने के लिए इस वर्ग का उदाहरण बनाते हैं, अन्यथा उनके कोड को संकलित नहीं करना चाहिए। " कई वर्गों के लिए, यह महत्वपूर्ण है कि कुछ पैरामीटर उनके उचित कार्य के लिए परिभाषित किए जाएं, और रचनाकारों को गैर-धर्मार्थ बनाने का तरीका यह है कि वर्ग लेखकों की गारंटी हो सकती है कि कुछ पैरामीटर हमेशा परिभाषित किए जाते हैं।
टिप्पणियों का जवाब देने के लिए संपादित करें: रमेश बताते हैं कि यदि रचनाकारों को विरासत में मिलाया गया था, तो वे हमेशा प्राप्त किए गए वर्ग में निजी रूप से घोषित रचनाकारों का उपयोग करके बेस क्लास कन्स्ट्रक्टर को ओवरराइड कर सकते थे। यह निश्चित रूप से सच है, लेकिन इस रणनीति के साथ यह एक तर्कसंगत समस्या है। यह आवश्यक है कि व्युत्पन्न कक्षाओं के लेखकों को आधार वर्गों को बारीकी से देखना होगा और यदि वे बेस क्लास कन्स्ट्रक्टर की ब्लॉक विरासत चाहते हैं तो एक निजी कन्स्ट्रक्टर जोड़ें। न केवल व्युत्पन्न कक्षाओं को लिखने वाले लोगों के लिए यह बहुत काम है, इस तरह की कक्षाओं में अंतर्निहित निर्भरता बिल्कुल ऐसी चीज है जो अजीब व्यवहार का कारण बन सकती है।
रमेश - यह नहीं है कि आप जो भी वर्णन करते हैं वह किसी भाषा में जोड़ना असंभव होगा। आम तौर पर ऐसा नहीं किया जाता है क्योंकि इस प्रकार का व्यवहार लोगों को भ्रमित कर सकता है और बहुत से अतिरिक्त डिबगिंग और कोड लेखन का कारण बन सकता है।
क्विंटिन रॉबिन्सन टिप्पणियों में इस प्रश्न के कुछ फायदेमंद प्रतिक्रिया प्रदान करता है जो निश्चित रूप से पढ़ने योग्य हैं।
स्रोत
2009-03-06 00:48:54
http://stackoverflow.com/questions/426484/why-are-constructors-not-inherited –