मान लीजिए अगर मैं नीचे के रूप में परिभाषित किया गया एक अंतरफलक है:सी # इंटरफ़ेस विरासत
public interface IFunctionality
{
void Method();
}
और मैं एक अमूर्त वर्ग के लिए इस इंटरफ़ेस को लागू के रूप में नीचे दिखाया गया है:
public abstract class AbstractFunctionality: IFunctionality
{
public void Method()
{
Console.WriteLine("Abstract stuff" + "\n");
}
}
फिर
मैं एक है ठोस वर्ग जो नीचे के रूप में सार वर्ग से विरासत:
public class ConcreteFunctionality: AbstractFunctionality
{
public void Method()
{
Console.WriteLine("Concrete stuff" + "\n");
}
}
अब मैं निम्नलिखित है सह डी,
ConcreteFunctionality mostDerived = new ConcreteFunctionality();
AbstractFunctionality baseInst = mostDerived;
IFunctionality interfaceInst = mostDerived;
mostDerived.Method();
baseInst.Method();
interfaceInst.Method();
इस सामान के निष्पादन के बाद जो उत्पादन हो रहा है वह निम्नानुसार है।
Concrete stuff
Abstract stuff
Abstract stuff
लेकिन क्या मैं क्या मैं यहाँ कर रहा हूँ प्रकार AbstractFunctionality
और IFunctionality
की चर के ConcreteFunctionality
के संदर्भ बताए है के रूप में सभी तीन मामलों में "कंक्रीट सामग्री" होने का उत्पादन की उम्मीद की है।
आंतरिक रूप से क्या हो रहा है। कृपया स्पष्ट करें।
यह कुछ स्पष्ट हो सकता है: http://stackoverflow.com/questions/392721/difference-between-shadowing-and-overriding-in-c – Stormenet
"यह छिपा हुआ है ओवरराइड नहीं" - एक अच्छा मंत्र याद करने के लिए। (लेकिन अपने संकलक इस उल्लेख किया जाना चाहिए था, आप अपनी चेतावनी फिल्टर करके निकाल करते है?) – kmote