क्षमा करें इस प्रश्न के लिए कोई फंकी शीर्षक नहीं मिला।एकाधिक विरासत और ऑब्जेक्ट्स सी #
मुझे सिखाया गया था कि .Net (C#) एकाधिक विरासत का समर्थन नहीं करता है। लेकिन नीचे foo उदाहरण को देखकर मुझे आश्चर्य है कि यह वास्तव में सच है ??
class fooList
{
public int Index()
{
return 0;
}
}
class foo : fooList
{
public foo()
{ }
}
class testFoo
{
void test()
{
foo obj = new foo();
// From object
obj.Equals(obj);
obj.GetHashCode();
obj.GetType();
obj.ToString();
// From fooList
obj.Index();
}
}
हम देख सकते हैं मैं एक वर्ग fooList
और एक वर्ग foo
जो (सी # एकाधिक विरासत का समर्थन नहीं करता) बातें के अनुसार fooList
विरासत वर्ग foo
का उद्देश्य केवल एक ही तरीका है जिसके Index()
है होना चाहिए है fooList
कक्षा से, लेकिन इसमें ऑब्जेक्ट क्लास से अधिक विधियां हैं। यह स्पष्ट रूप से इंगित करता है कि डिफ़ॉल्ट रूप से सभी वर्गों में object
वर्ग का उत्तराधिकारी होता है। तो प्रश्न
- क्या यह वास्तव में पूरी तरह से सच है कि सी # एकाधिक विरासत का समर्थन नहीं करता है?
- मुझे लगता है कि यह सीएलआर स्तर पर इसका समर्थन करता है, यह कोडिंग में का समर्थन क्यों नहीं करता है?
यह एकाधिक विरासत का मामला नहीं है। प्रत्येक वर्ग ऑब्जेक्ट से विरासत में मिलता है अगर अन्यथा निर्दिष्ट नहीं किया जाता है। यदि आप सीधे किसी अन्य वर्ग से उत्तराधिकारी हैं, तो आप ऑब्जेक्ट से अप्रत्यक्ष रूप से ऑब्जेक्ट प्राप्त करते हैं क्योंकि उस वर्ग को ऑब्जेक्ट से प्राप्त होता है। वस्तु सभी वस्तुओं के लिए जड़ है। – Andreas
'कक्षा fooList'' वर्ग fooList: ऑब्जेक्ट' के लिए एक लघुरूप है। यह आपके भ्रम को दूर करना चाहिए। इंटरफेस को इंगित करने के लिए – user1096188