वीडियो: सी ++ में एकाधिक विरासत का समर्थन क्यों किया जाता है लेकिन जावा में नहीं?
2024 लेखक: Lynn Donovan | [email protected]. अंतिम बार संशोधित: 2023-12-15 23:47
सी++ , आम लिस्प और कुछ अन्य भाषाएं एकाधिक विरासत का समर्थन करता है जबकि जावा नहीं है सहयोग यह। जावा अनुमति नहीं देता एकाधिक विरासत इससे होने वाली अस्पष्टता से बचने के लिए। ऐसी समस्या का एक उदाहरण हीरे की समस्या है जो में होती है एकाधिक विरासत.
तदनुसार, जावा में एकाधिक वंशानुक्रम समर्थित क्यों नहीं है?
जावा का समर्थन करता है एकाधिक विरासत केवल इंटरफेस के माध्यम से। एक वर्ग किसी भी संख्या में इंटरफेस को लागू कर सकता है लेकिन केवल एक वर्ग का विस्तार कर सकता है। एकाधिक विरासत है नहीं समर्थित है क्योंकि यह घातक हीरे की समस्या की ओर जाता है। आप इंटरफ़ेस से कोई कार्यक्षमता प्राप्त न करें।
साथ ही, बहु वंशानुक्रम में हीरे की समस्या क्या है? NS " हीरे की समस्या "एक अस्पष्टता है जो अनुमति देने के परिणामस्वरूप उत्पन्न हो सकती है एकाधिक विरासत . यह एक गंभीर संकट भाषाओं के लिए (जैसे C++) जो अनुमति देते हैं एकाधिक विरासत राज्य का। जावा में, हालांकि, एकाधिक विरासत कक्षाओं के लिए अनुमति नहीं है, केवल इंटरफेस के लिए, और इनमें राज्य नहीं है।
इसी तरह, लोग पूछते हैं, सी ++ एकाधिक विरासत का समर्थन क्यों करता है लेकिन सी # नहीं करता है?
एकाधिक विरासत में सी # सी # एकाधिक विरासत का समर्थन नहीं करता , क्योंकि उन्होंने तर्क दिया कि जोड़ना एकाधिक विरासत में बहुत अधिक जटिलता जोड़ी गई सी# बहुत कम लाभ प्रदान करते हुए। में सी# , कक्षाओं को केवल करने की अनुमति है इनहेरिट सिंगल पेरेंट क्लास से, जिसे सिंगल कहा जाता है विरासत.
सी ++ एकाधिक विरासत का समर्थन कैसे करता है?
कई अन्य वस्तु-उन्मुख प्रोग्रामिंग भाषाओं के विपरीत, सी++ की अनुमति देता है एकाधिक विरासत . एकाधिक विरासत एक बाल वर्ग को अनुमति देता है इनहेरिट एक से अधिक अभिभावक वर्ग से। पशु और सरीसृप वर्ग इनहेरिट यह से। केवल एनिमल क्लास ब्रीद () विधि को ओवरराइड करता है।