चलो कहते हैं कि मैं निम्नलिखित कोड डालें:सी # विरासत
interface ISomeInterface
{
void DoSomething();
void A();
void B();
}
public abstract class ASomeAbstractImpl : ISomeInterface
{
public abstract void A();
public abstract void B();
public void DoSomething()
{
// code here
}
}
public class SomeImpl : ASomeAbstractImpl
{
public override void A()
{
// code
}
public override void B()
{
// code
}
}
समस्या यह है कि मैं ASomeAbstractImpl.DoSomething()
विधि सील (अंतिम) अत: कोई अन्य वर्ग इसे लागू कर सकता है करना चाहते हैं। कोड के रूप में अब SomeImpl
में DoSomething()
नामक एक विधि हो सकती है और इसे कहा जा सकता है (यह अमूर्त वर्ग से उसी नाम के साथ विधि को ओवरराइड नहीं करेगा, क्योंकि यह वर्चुअल के रूप में चिह्नित नहीं है), फिर भी मैं इसे काटना चाहता हूं SomeImpl
कक्षा में ऐसी विधि को लागू करने की संभावना।
क्या यह संभव है?
यदि आप दुर्घटना से ऐसा करते हैं तो यह केवल एक चेतावनी जारी करेगा; "नया" क्वालीफायर जोड़ें और यह बंद हो जाता है ... –