2013-06-24 19 views
9

में किसी विधि की ओवरराइडिंग फोर्बिड यहां मेरी कक्षा है और मैं नहीं चाहता कि यह विधि बाल कक्षाओं में ओवरराइड हो, मैं इस व्यवहार को कैसे पूरा कर सकता हूं?व्युत्पन्न वर्ग

class A 
{ 
    public virtual void demo() 
    { 
    } 
} 

class B : A 
{ 
    public override void demo() 
    { 
    } 
} 

// when Class B be inherited in C, methods can be overridden further, 
// but I don't want the method to be overridden further. 
class C : B 
{ 

} 
+1

से पहले संशोधक आप इस विधि [सील] करना चाहते हैं (http://msdn.microsoft.com/en-us/library/88c54tsw.aspx)? –

उत्तर

9

पुट 'sealed' override void demo()

class A 
{ 
    public virtual void demo() 
    { 
    } 
} 

class B:A 
{ 
    public sealed override void demo() 
    { 
    } 
} 

//B can be inherited in C but demo() method can not be overriden further 
class C:B 
{ 

} 
11

तुम बस sealed संशोधक की जरूरत है: (। मुझे लगता है कि यह सामान्य रूप से एक नाम ज़ाहिर है, .नेट सम्मेलनों के अनुरूप होगा)

public sealed override void demo() 
{ 
    // Whatever implementation 
} 

आप रोकना चाहते हैं स्वयं व्यवहार को बदलने के बिना ओवरराइड होने की विधि, आपको इसे ओवरराइड करने की आवश्यकता है लेकिन स्पष्ट रूप से पिछले व्यवहार को कॉल करें:

public sealed override void demo() 
{ 
    base.demo(); 
} 

ध्यान दें कि जब किसी विधि (या संपत्ति) पर लागू होता है, sealedकेवलoverride के संयोजन के साथ लागू किया जा सकता है।

संबंधित मुद्दे