यहां तक कि अगर यह बुरा व्यवहार हो सकता है, तो मैं कहूंगा कि ऐसा समय है कि यह अपने उद्देश्य को पूरा करेगा।
यहां तक कि अगर यह बुरा व्यवहार हो सकता है, तो मैं कहूंगा कि ऐसा समय है कि यह अपने उद्देश्य को पूरा करेगा।
जवाबों:
/programming/995255/why-is-multiple-inheritance-not-allowed-in-java-or-c इस सवाल को अच्छी तरह से शामिल करता है।
इस पर मेरा लेना यह है: डिजाइनर शायद एक ऐसी भाषा बनाना चाहते थे जिसने अच्छे डिजाइन सिद्धांतों को बढ़ावा दिया। ठीक है, इसलिए कई बार ऐसा होता है कि एकाधिक उत्तराधिकार परिपूर्ण है। नियम के बजाय वे अपवाद हैं, हालांकि, और बहुत आसानी से दुरुपयोग किया जा सकता है। इसलिए, डिजाइनरों ने इसे करना असंभव बनाने का फैसला किया।
उन मामलों के लिए जहां यह अच्छा होगा, आपको इंटरफेस का उपयोग करने की आवश्यकता है। वे काम, यद्यपि अनाड़ी रूप से; लेकिन, आपको उनकी उतनी आवश्यकता नहीं होगी।
बस यह स्पष्ट करने के लिए कि क्यों नहीं, एकाधिक वंशानुक्रम C ++ द्वारा समर्थित है, लेकिन दृढ़ता से हतोत्साहित किया जाता है क्योंकि आप रचना के साथ अधिकांश सामान को पूरा कर सकते हैं जो आप एमआई के साथ करेंगे, हालांकि एक बहुत क्लीनर फैशन में। C ++ के विपरीत, C # एक "संकर" प्रकार OOP भाषा नहीं है, अर्थात यह पिछली भाषा से विकसित नहीं हुई है।
यदि आपको वास्तव में कई विरासत की आवश्यकता है, तो आप कई इंटरफेस को लागू कर सकते हैं।
वाल्टर ब्राइट डी के निर्माता दोनों हैं, जिसमें एमआई शामिल नहीं है, और एकमात्र व्यक्ति कभी भी अपने द्वारा संपूर्ण C ++ कंपाइलर लिखने के लिए। उनके अनुसार, डी की कमी का कारण यह है कि एमआई की प्रणाली बनाना बहुत कठिन है, जो एक साथ कुशल, सरल और उपयोगी है। मुझे जावा और C # पर समान तर्क का संदेह है। पर्ल और पायथन जैसी भाषाओं में एक प्राथमिक लक्ष्य के रूप में दक्षता नहीं है, इसलिए उनके पास एक ऐसी प्रणाली है जो सरल और उपयोगी है, लेकिन कुशलता से लागू करने के लिए कठिन है। C ++ में लक्ष्य के रूप में सरलता नहीं है, इसलिए इसने एक जटिल जटिल प्रणाली बनाई जो लगभग किसी को समझ में नहीं आती है।
मुझे लगता है कि वाल्टर निशाने पर सही है। यदि कोई ऐसी भाषा मौजूद है जिसमें MI सिस्टम है जो इन तीनों मानदंडों को यथोचित रूप से अच्छी तरह से संतुष्ट करता है, तो कृपया एक टिप्पणी छोड़ दें।
मल्टीपल इनहेरिटेंस, यदि आप इसका बहुत अधिक उपयोग करते हैं, तो परिणाम बहुत जटिल होते हैं। बहुत ही कम लाभ के साथ बहुत जटिलता यह है कि इसे जावा और सी # दोनों के लिए खारिज कर दिया गया था।
क्योंकि भाषा डिजाइनर स्पष्ट रूप से एक बेहतर C ++ का उत्पादन करना चाहते थे, सामान्य रूप से बेहतर भाषा नहीं। (वे कितने सफल थे, इस पर बहस हो सकती है।)
C ++ - स्टाइल मल्टीपल इनहेरिटेंस में कुछ समस्याएं हैं, और इसलिए C ++ से व्युत्पन्न लोग आम तौर पर इसे छोड़ देते हैं (जावा, C #, D)। अन्य भाषाएं, एफिल और कॉमन लिस्प, दो नाम, इसे अलग तरह से करते हैं और समान समस्याएं नहीं लगती हैं।