2012-01-12 11 views
5

मैं आरएकाधिक विरासत का उपयोग करने की अनुशंसा क्यों नहीं की जाती है?

में एस 4 वर्गों बनाने हूँ मैं में https://github.com/hadley/devtools/wiki/S4

नोट पढ़ा है कि एस 4 एकाधिक वंशानुक्रम का समर्थन करता है, लेकिन इस अत्यधिक सावधानी के साथ इस्तेमाल किया जाना चाहिए के रूप में यह विधि देखने अत्यंत जटिल बना देता है।

विधि लुकअप क्या है और यह एकाधिक विरासत के साथ और अधिक जटिल क्यों है? (है कि एक वर्ग से, बी, या सी)

+0

बस सुनिश्चित करें कि आप कई एस 4 संसाधनों के बारे में पता कर रहे हैं: http://stackoverflow.com/questions/4143611/sources-on-s4-objects-methods-and-programming-in-r –

उत्तर

10

आप f(x) टाइप करते हैं, x कई वर्गों (जैसे कि, ए, बी और सी) से संबंधित के साथ, कंप्यूटर जो f विधि कॉल करने का फैसला किया है: यह कहा जाता है "विधि लुकअप"।

कोड विकसित होने पर एकाधिक विरासत अक्सर समस्याएं उत्पन्न होती हैं।

कल्पना कीजिए कि आपने दो बेस क्लास ए और बी, और कक्षा सी दोनों से विरासत प्राप्त की है। सब कुछ ठीक काम करता है। कुछ महीने बाद, एक डेवलपर, जो कक्षा ए का उपयोग करता है, और कक्षा बी और सी (उन्हें उनकी आवश्यकता नहीं है) से पूरी तरह से अनजान है, कक्षा ए को एक नई विधि जोड़ती है, उसके बारे में अज्ञात, पहले से ही एक विधि है कक्षा बी में एक ही नाम कक्षा सी की वस्तुओं के साथ क्या होता है? क्या ए या बी से विधि का उपयोग किया जाएगा? कुछ भाषाओं में, कोड विफल हो सकता है, दूसरों में आप एक अपरिभाषित व्यवहार और एक बहुत मुश्किल पकड़ पकड़ सकते हैं।

+3

मैं अपने स्पष्टीकरण लगता है एस 4 विधियों के बारे में थोड़ा उलझन में है - वे कक्षाओं के नहीं, कार्यों के हैं। – hadley

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

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