वीबी नेट में एकाधिक विरासत संभव है? यदि हां, तो वाक्यविन्यास क्या है?वीबी नेट में एकाधिक विरासत संभव है?
उत्तर
लघु जवाब: नहीं
थोड़ा लंबा उत्तर: हाँ, आप एक से अधिक इंटरफेस, और एक एकल आधार वर्ग के वारिस हैं। चूंकि यह आमतौर पर एमआई (आप कई इंटरफेस को कार्यान्वित करना चाहते हैं) का कारण है, यह आमतौर पर पर्याप्त है। हालांकि, उन दुर्लभ उदाहरणों में जहां "वास्तविक" एमआई उपयोगी है, .NET आपको ऐसा करने से रोकता है।
वीबी.Net में प्रतिबंधित तरीके से यह संभव है कि यह सी # में इंटरफेस के माध्यम से है। चूंकि एक इंटरफ़ेस अनिवार्य रूप से एक शुद्ध-सार आधार वर्ग के लिए काम करता है, इसलिए आप जितनी जरूरत हो और उनमें से एक वास्तविक वर्ग से उत्तराधिकारी हो सकते हैं।
शायद आप जो करना चाहते हैं वह वास्तव में संरचना या एकत्रीकरण है (here for design pattern देखें)। शायद आप एक व्यवहार को परिभाषित कर रहे हैं। आप बेस क्लास में इंटरफ़ेस कुछ इंटरफेस को हमेशा कार्यान्वित कर सकते हैं, इसमें कुछ इंटेरफेस टाइप करने वाले सदस्य हैं (जो किसी भी वर्ग को लागू करता है जो कुछ इंटरफेस लागू करता है और इसलिए कोड कार्यान्वित करता है), सदस्यों के कन्स्ट्रक्टर में बेस क्लास का संदर्भ पास होता है यदि आवश्यक हो तो इसका मालिक है (यदि ऐसा कर रहा है, तो कॉलबैक को परिभाषित करने के लिए एक और इंटरफ़ेस जोड़ने का प्रयास करें, बेस क्लास इसे कार्यान्वित करेगी और सबक्लास के पास सदस्य चर प्रकार के रूप में होगा)। SomeInterface को लागू करने के लिए सदस्य वर्ग में कॉल का उपयोग करें। इस तरह कोड को किसी अन्य वर्ग में लागू किया जाता है, जो इसे बनाए रखना आसान बनाता है, लेकिन आप एकाधिक विरासत नहीं कर रहे हैं।
संरचना के पीछे विचार यह है कि एक इंजन कार नहीं है लेकिन एक कार में एक इंजन है। कार को एक इंजन की जरूरत है, लेकिन यह जानने की जरूरत नहीं है कि एक संपूर्ण इंजन इकाई कैसे काम करती है, बस इसके साथ कैसे इंटरफ़ेस करें। तो इंजन कार से वारिस नहीं होना चाहिए। लेकिन कार को लागू करने वाली कार मूर्खतापूर्ण है। तो कार पूरी कार के सदस्य के रूप में एक इंजन के रूप में, लेकिन एक वस्तु के रूप में एक इंजन हो जाता है। कार की संरचना के हिस्से के रूप में एक इंजन है।
ऐसा लगता है कि आप जो कर रहे हैं वह एक व्यवहार है, जैसे एक बतख वस्तु जिसमें क्वाक व्यवहार होता है, लेकिन रबर बतख बतख होते हैं लेकिन क्विक नहीं करते हैं लेकिन स्क्वाक करते हैं। इसलिए वे मल्लार्ड ऑब्जेक्ट्स से भिन्न होते हैं, लेकिन दोनों में आम तौर पर कई अन्य बतख सुविधाएं होती हैं। तो आप एक क्वाक इंटरफ़ेस रखना चाहते हैं जो प्रत्येक अलग-अलग लागू करता है। लेकिन इस इंटरफ़ेस के लिए कई बतख रैक हो जाएंगे, इसलिए आप प्रत्येक के लिए क्वाक लिखना नहीं चाहते हैं। यही वह जगह है जहां आप क्वाक व्यवहार इंटरफ़ेस को लागू करने के लिए संरचना का उपयोग करते हैं।
जहाँ तक मुझे पता के रूप में VB.net सामान्य रूप में एकाधिक वंशानुक्रम का समर्थन नहीं करता, लेकिन आप इंटरफेस के साथ काम (बजाय "विरासत में मिली" के "औजार" का प्रयोग करके) द्वारा एकाधिक वंशानुक्रम का एक प्रकार तक पहुँच सकते हैं:
Public Class ClassName
Implements BaseInterface1, BaseInterface2
End Class
यह कक्षाओं के लिए ठीक काम करता है लेकिन मैं कुछ बेस इंटरफेस विरासत में एक इंटरफेस रखना चाहता हूं। कुछ ऐसा:
Public Interface InterfaceName
Implements BaseInterface1, BaseInterface2
End Interface
लेकिन इंटरफ़ेस के लिए "कार्यान्वयन" कीवर्ड की अनुमति नहीं है (निश्चित रूप से क्या समझ में आता है)। मैं सार वर्ग का एक प्रकार है जो मैं जावा से पता का उपयोग करने की कोशिश की:
Public MustInherit Class InterfaceName
Implements BaseInterface1, BaseInterface2
End Class
लेकिन अब मैं BaseInterface1 और BaseInterface2 से परिभाषित तरीकों InterfaceName वर्ग के भीतर लागू करने के लिए की जरूरत है। लेकिन इंटरफेसनाम एक इंटरफेस होना चाहिए, इसलिए, मैं उस वर्ग के भीतर इन तरीकों को लागू नहीं करना चाहता हूं।
सी # में आप ऐसा कर सकते हैं काफी आसान:
public interface InterfaceName: BaseInterface1, BaseInterface2 {}
- 1. वीबी .नेट लैम्बडास
- 2. विरासत वीबी 6 कोड
- 3. एकाधिक विरासत बुराई है?
- 4. परिवर्तित दिनांक समय वीबी नेट
- 5. नेट विरासत: आधार वर्ग
- 6. एक्शनस्क्रिप्ट में एकाधिक विरासत 3
- 7. क्लोजर में डेटाटाइप विरासत करना संभव है?
- 8. नेट एक्सएमएल क्रमबद्धता और विरासत
- 9. कोडनिर्देशक और एकाधिक विरासत?
- 10. एकाधिक विरासत: एक अच्छा उदाहरण क्या है?
- 11. क्या वीबी .NET में गतिशील स्थिरता घोषित करना संभव है?
- 12. संभव डुप्लिकेट नेट
- 13. क्यूओब्जेक्ट एकाधिक विरासत
- 14. 'विरासत प्रत्यक्ष आधार' एकाधिक विरासत के कारण
- 15. एकाधिक इंटरफ़ेस विरासत
- 16. एकाधिक विरासत Extzs?
- 17. ऑब्जेक्ट (रूट) वर्ग एकाधिक विरासत को क्यों नहीं रोकता है
- 18. एकाधिक विरासत टेम्पलेट कक्षा
- 19. सी ++ एकाधिक विरासत प्रश्न
- 20. नेट विरासत - स्वचालित निर्भरता संदर्भ संदर्भ समस्या
- 21. रूबी एकाधिक विरासत का समर्थन करता है
- 22. पायथन की एकाधिक विरासत: पाइथन में
- 23. वीबी
- 24. एकाधिक विरासत के लिए उपयोग?
- 25. जावा ओआरएम: एकाधिक (इंटरफ़ेस) विरासत
- 26. क्यूटी एकाधिक विरासत और संकेत
- 27. पते, reinterpret_cast और एकाधिक विरासत
- 28. वीबी
- 29. क्या एआईडीएल इंटरफेस में विरासत का उपयोग करना संभव है?
- 30. PHP में कक्षा स्तर पर एकाधिक विरासत की अनुमति है?
एक अंतरफलक विरासत वास्तव में विरासत हालांकि नहीं है ... –
@Orion एडवर्ड्स: यह कैसे नहीं है? विरासत परिभाषित करता है "एक" संबंध है, और इंटरफेस परिभाषित करने का एक तरीका है कि कोई वस्तु 'क्या है'। अगर मैं ISerializable का उत्तराधिकारी हूं, तो मैं कह रहा हूं "मैं एक आईएसरियलज़ेबल हूं", और मुझे उम्मीद के अनुसार एक आईएसरियलज़ेबल काम के रूप में इलाज कर रहा हूं। –
@ हार्पर शेल्बी की टिप्पणी के आगे, इस तरह के प्रतिबंध का एक स्वैच्छिक अनुप्रयोग आमतौर पर सी ++ में सर्वोत्तम अभ्यास के रूप में देखा जाता है (इंटरफेस के बजाय आपके पास शुद्ध सार आधार कक्षाएं होती हैं)। – Richard