यदि कोई इंटरफ़ेस किसी अन्य इंटरफ़ेस को वापस करने के लिए कोई प्रॉपर्टी या विधि निर्दिष्ट करता है, तो पहले इंटरफ़ेस के कार्यान्वयन के लिए इसे किसी अन्य विशिष्ट प्रकार में "प्रकार" बदलने के लिए अनुमति क्यों नहीं दी जाती है?इंटरफ़ेस कार्यान्वयन एक और विशिष्ट प्रकार क्यों नहीं लौटा सकता है?
के वर्णन करने के लिए एक उदाहरण लेते हैं: यह काम करने के लिए कैसे
interface IFoo
{
IBar GetBar();
}
interface IBar
{ }
class Foo : IFoo
{
// This is illegal, we are not implementing IFoo properly
public Bar GetBar()
{
return new Bar();
}
}
class Bar : IBar
{ }
मैं पता है, कि नहीं मेरी चिंता का विषय है।
मैं बस या तो:
- बदलें वापसी
IBar
करने के लिएGetFoo()
के प्रकार, या - स्पष्ट इंटरफ़ेस को लागू और बस
IFoo.GetBar()
विधि
से GetBar
फोन क्या मैं सच में पूछ रहा हूँ उपरोक्त कोड को संकलित करने की अनुमति न देने का तर्क है। क्या कोई ऐसा मामला है जहां उपर्युक्त IFoo
द्वारा निर्दिष्ट अनुबंध को पूरा नहीं करता है।
एक तीसरा तरीका है, जो उपर्युक्त दो से थोड़ा अधिक सुविधाजनक है। आप एक अमूर्त वर्ग के साथ इंटरफ़ेस को कार्यान्वित कर सकते हैं। और फिर, आपके "ठोस" वर्ग में इंटरफेस के बजाय अमूर्त वर्ग का उत्तराधिकारी होता है। फिर अपनी "कंक्रीट" कक्षा में, आप "नए" कीवर्ड के साथ मूल विधियों को छुपा सकते हैं। यह मेरे लिए सौभाग्य से काम कर रहा है। – BrainSlugs83
मुझे लगता है कि BrainSlugs83 की टिप्पणी यहां एक उत्तर है क्योंकि यह एक सभ्य कामकाज प्रदान करता है। –