मैंने फ़ोरम पर कुछ टिप्पणियां देखीं, और ऐसा लगता है कि लोग सी # में कई कक्षाओं से प्राप्त करने में सक्षम होना चाहते हैं। आपको इसकी आवश्यकता क्यों होगी? मैं इसके लिए किसी भी प्रयोग के बारे में नहीं सोच सकता, लेकिन चूंकि ऐसे लोग हैं जो इसे चाहते हैं, कुछ होना चाहिए।एकाधिक कक्षाओं से विरासत का उपयोग क्या है?
उत्तर
ठीक है, यहाँ एक ASP.NET WebForms उदाहरण है::
यहाँ एफिल में एकाधिक वंशानुक्रम पर एक अच्छा लेख है
मैं एक आधार वर्ग, एक वेब नियंत्रण है, चलो यह मान लीजिए एक साधारण TextBox
है।
मैं प्रारूपण प्रदान करने के लिए TextBox
से प्राप्त करता हूं - RichTextBox
।
मैं फिर TextBox
रखना चाहता हूं जो वर्तनी-जांच - SpellCheckingTextBox
कर सकता है।
यदि मुझे SpellCheckingRichTextBox
की आवश्यकता है तो क्या होगा? मुझे फिर से वर्तनी जांच या समृद्ध पाठ तर्क लागू करना होगा और एक या दूसरे से प्राप्त होना होगा।
असल में आप उन्हें इंटरफ़ेस के रूप में परिभाषित करेंगे: ISpellCheckingTextBox
और IRichTextBox
और उन्हें SpellCheckingRichTextBox
में लागू करें। आप एक ही चीज़ को पूरा करने के लिए TextBox
के लिए एक्सटेंशन विधियां भी लिख सकते हैं।
एकाधिक विरासत मौलिक रूप से त्रुटिपूर्ण है क्योंकि यह वंचित वर्गों को बराबर मानता है। क्या होगा यदि दोनों बेस क्लास में ID
फ़ील्ड था?
लोग शायद ऐसा करना चाहते हैं क्योंकि वे इसे C++ में करने के आदी हैं। सी # में इसकी अनुमति नहीं है। कौन सा, आईएमओ, एक अनुप्रयोग रखरखाव बिंदु से एक अच्छी बात है। कई बार, एकाधिक इंटरफेस का उपयोग करना एक ही चीज़ को पूरा करेगा।
यदि आपके पास सार तत्वों के साथ मूल श्रेणी सही ढंग से डिज़ाइन किया गया है और यह पता है कि विरासत वस्तु को केवल उस वर्ग में परिभाषित विधियों की आवश्यकता होगी, तो आपके पास वैध है डिजाइन पैटर्न जो एमआई की आवश्यकता नहीं है।
बहुत कम लोग वास्तव में सी ++ में एमआई का उपयोग करते हैं। वास्तव में, लोग एमआई का उपयोग करना चाहते हैं क्योंकि वे नहीं जानते कि इसे सही तरीके से कैसे किया जाए। –
कई विरासत कभी-कभी C++ (और अन्य भाषाओं) में उपयोग किया जाता है ताकि कक्षा को गुणों और एकाधिक आधार वर्गों से कोड प्राप्त हो सके। जब आपके पास इंटरफेस होते हैं, जैसे सी # और जावा में, वास्तव में एकाधिक विरासत की आवश्यकता नहीं होती है, इसलिए यह उन भाषाओं में लागू नहीं किया गया था।
http://archive.eiffel.com/doc/manuals/technology/bmarticles/joop/multiple.html
"कोई ज़रूरत नहीं है" अतिरंजित है: हां, इंटरफेस एमआई प्रदान करता है जो अधिकांश करता है, लेकिन मिश्रणों ऑर्थोगोनल व्यवहार नीतियों के संयोजन के लिए एक शक्तिशाली मुहावरे प्रदान करते हैं।चाहे वह शक्ति "मृत्यु के हीरे" की परेशानियों के लायक है, पूरी तरह से एक और मुद्दा है। –
सी # में इसे प्राप्त करने के लिए एक वैध मामला मार्शलबीरफ को व्युत्पन्न वस्तु बनाना है। उदाहरण के लिए, कहते हैं कि मैं निम्न कार्य करने के:
public class FooCorpClass
{
// This class is defined in a 3rd party library and thus can't be changed
}
public class MyFoo : FooCorpClass, MarshalByRef
{
// I can't do this because MarshalByRef isnt' an interface
}
व्यक्तिगत तौर पर मैं शर्म की बात है के रूप में देखते है कि आप एकाधिक वंशानुक्रम अगर वहाँ नहीं टकराव हैं नहीं हो सकता है, या एक टक्कर से निपटने तंत्र है, लेकिन उनमें है टूट जाता है।
- 1. दो व्युत्पन्न कक्षाओं से एकाधिक विरासत
- 2. .net अमूर्त कक्षाओं से एकाधिक विरासत
- 3. सी ++ "एकाधिक कक्षाओं" के साथ एकाधिक विरासत मेमोरी लेआउट
- 4. एकाधिक विरासत: एक अच्छा उदाहरण क्या है?
- 5. रूबी एकाधिक विरासत का समर्थन करता है
- 6. क्यूटी/सी ++ में एकाधिक विरासत का सही तरीका क्या है?
- 7. एकाधिक विरासत के लिए उपयोग?
- 8. एकाधिक मुख्य तरीकों का उपयोग क्या है?
- 9. एकाधिक विरासत बुराई है?
- 10. एकाधिक इंटरफ़ेस विरासत
- 11. विरासत कक्षाओं के भीतर लॉक का उपयोग करने के लिए सबसे अच्छा अभ्यास क्या है
- 12. क्यूओब्जेक्ट एकाधिक विरासत
- 13. क्या [Serializable] विरासत कक्षाओं के लिए काम करता है?
- 14. एकाधिक कक्षाओं के साथ log4j का उपयोग कैसे करें?
- 15. कक्षाओं का सही उपयोग?
- 16. ORMLite का उपयोग करके मैं विरासत कक्षाओं को सही ढंग से कैसे एनोटेट कर सकता हूं?
- 17. कोडनिर्देशक और एकाधिक विरासत?
- 18. एकाधिक विरासत: शून्य से * 2 बेस क्लास
- 19. सी # एकाधिक कक्षाओं द्वारा उपयोग की जाने वाली enum बनाने का सबसे अच्छा तरीका क्या है?
- 20. आंशिक कक्षाओं का उपयोग
- 21. सी ++ एकाधिक विरासत प्रश्न
- 22. एकाधिक विरासत Extzs?
- 23. एकाधिक प्रकार/कक्षाओं के लिए एचक्यूएल क्वेरी
- 24. इंटरफेस का उपयोग कैसे सी # में एकाधिक विरासत की समस्या से उबरता है?
- 25. विरासत कक्षाओं में अमूर्त विधि हस्ताक्षर बदलना
- 26. अमूर्त कक्षाओं में माध्यमिक रचनाकारों का उपयोग केस क्या है?
- 27. 'विरासत प्रत्यक्ष आधार' एकाधिक विरासत के कारण
- 28. एकाधिक विरासत टेम्पलेट कक्षा
- 29. विरासत कक्षाओं में फ़ील्ड शुरू करना
- 30. एकाधिक विरासत से संबंधित इंटरफ़ेस का उपयोग करने का कोई वास्तविक उदाहरण
अधिकतर समय यदि आपको एकाधिक विरासत की आवश्यकता है, तो आपका डिज़ाइन शायद कुछ हद तक गलत हो सकता है :) –
सी ++ दिनों में, आपको कभी-कभी इसकी आवश्यकता होती है, इंटरफेस –
की कमी के कारण [एकाधिक विरासत के लिए उपयोग?] (http://stackoverflow.com/questions/573913/a-use-for-multiple- विरासत) –