2010-05-16 10 views
7

प्रोग्रामिंग भाषा में एकाधिक विरासत का समर्थन क्यों नहीं किया जाता है?प्रोग्रामिंग भाषा में एकाधिक विरासत का समर्थन क्यों नहीं किया जाता है?

मैं वास्तव में एप्लिकेशन के विभिन्न लेआउट को विकसित करने के लिए इस सुविधा का उपयोग कर सकता हूं?

+0

कुछ कारण: http://stackoverflow.com/questions/191691/should-c-include-multiple- विरासत, http://stackoverflow.com/questions/406081/why-should-i-avoid- बहु- विरासत-इन-सी, http://stackoverflow.com/questions/225929/what-is-the-exact-problem-with-multiple-inheritance – kennytm

+0

कई भाषाएं PHP के रूप में कई इंटरफ़ेस को लागू करने के माध्यम से इसका समर्थन करती हैं। क्या आप समझा सकते हैं कि आप क्या करने की कोशिश कर रहे हैं? –

+0

मैं विभिन्न वर्गों का संयोजन कर रहा हूं और एक प्रमुख वर्ग का निर्माण कर रहा हूं जिसके माध्यम से मुझे सभी उप-वर्गों में सभी विधियों तक पहुंच होगी। मेरी कोड लाइब्रेरी बहुत बड़ी है, इसलिए मैं इसे अलग करने की कोशिश कर रहा था। – Starx

उत्तर

9

डेवलपर के रूप में कई स्थितियों में एकाधिक विरासत उपयोगी है, लेकिन यह भाषा की जटिलता को बहुत बढ़ा देती है, जो संकलक डेवलपर्स और प्रोग्रामर दोनों के लिए जीवन कठिन बनाती है।

  • एक समस्या तब होती है जब दो मूल वर्गों में डेटा सदस्य या समान नाम के तरीके होते हैं। यह हल करना मुश्किल है जिसे उप-वर्ग द्वारा संदर्भित किया जा रहा है।

  • एक और तब होता है जब दो मूल वर्ग समान आधार वर्ग से प्राप्त होते हैं, जो विरासत पदानुक्रम में "हीरा" पैटर्न बनाते हैं।

  • आदेश है कि initialisation/माता-पिता वर्गों के विस्तार निर्दिष्ट करने की आवश्यकता है - कुछ आश्चर्य से डेवलपर्स को पकड़ सकता है - इसमें कभी कभी व्यवहार को बदलने जब विरासत का क्रम बदल गया हो सकता है।

  • कुछ भाषाएं 'सुपर' या समकक्ष के संदर्भ का समर्थन करती हैं, जो इस ऑब्जेक्ट के लिए बेस क्लास की विशेषता को संदर्भित करती है। एकाधिक विरासत वाली भाषा में समर्थन करना मुश्किल हो जाता है।

  • कुछ भाषाएं स्वचालित ऑब्जेक्ट-रिलेशनल मॉडल प्रदान करने का प्रयास करती हैं, इसलिए वस्तुओं को नियमित आरडीएमएस के साथ लगातार बनाया जा सकता है। यह मैपिंग सर्वोत्तम समय पर कठिन है (इसे सॉफ्टवेयर विकास के "वियतनाम युद्ध" के रूप में वर्णित किया गया है), लेकिन एकाधिक विरासत समर्थित होने पर यह अधिक कठिन है।

4

इसका समर्थन करने का एक कारण विधि समाधान की अस्पष्टता नहीं है।

http://en.wikipedia.org/wiki/Diamond_problem

हालांकि, मुझे यकीन है कि आप "सबसे" प्रोग्रामिंग भाषाओं से क्या मतलब है नहीं कर रहा हूँ। उपयोग में आने वाले बहुत से लोग इसे सीधे समर्थन करते हैं (सी ++, पायथन, पर्ल, ओकैमल) या समान कार्यक्षमता के लिए एक तंत्र है (रूबी और स्कैला दिमाग में आते हैं)।

-4

असली कारण है कि एकाधिक वंशानुक्रम कई भाषाओं में समर्थित नहीं है, बस भाषा डेवलपर्स की आलस्य है। इस शर्मनाक विफलता को कवर करने के लिए, बहाने के सभी प्रकार किए जाते हैं, "यह डेवलपर के लिए जीवन को मुश्किल बनाता है" ब्लै ब्ला, लेकिन किसी भी व्यक्ति के लिए जिसने वास्तव में ऐसी भाषा का उपयोग किया है जो इसे अच्छी तरह लागू करता है, कई विरासत प्राकृतिक हो जाती है और लगभग 1 महीने बाद आसान हो जाती है । कोई बड़ी बात नहीं।

इसके साथ एकमात्र समस्या यह महसूस करने के बाद है कि यह कितना उपयोगी और आसान है, आप उन भाषाओं के लिए एलर्जी बन जाते हैं जो इसका समर्थन नहीं करते हैं और इससे आपकी करियर की संभावनाएं बाधित हो सकती हैं।

तो मेरी सलाह इससे दूर रहना होगा।

+0

जिज्ञासा से बाहर: आपकी पसंदीदा भाषा क्या है और कौन सी भाषा एकाधिक है विरासत सबसे अच्छा हल किया? – sodik

संबंधित मुद्दे