हां, abstract methods are virtual परिभाषा के अनुसार; वे करने के लिए वास्तव में उपवर्गों द्वारा ओवरराइड किया जा क्रम में overridable होना चाहिए:
जब एक उदाहरण विधि घोषणा एक abstract
संशोधक भी शामिल है, उस विधि एक सार विधि होना कहा जाता है। यद्यपि एक सार विधि भी आभासी विधि है, इसमें संशोधक virtual
नहीं हो सकता है।
इसके विपरीत आप एक अमूर्त गैर-आभासी विधि घोषित नहीं कर सकते हैं, क्योंकि यदि आप कर सकते हैं, तो आपके पास एक ऐसी विधि होगी जिसे कार्यान्वित नहीं किया जा सकता है और इस प्रकार इसे कभी भी बेकार नहीं बनाया जा सकता है।
हालांकि, अगर आप एक वर्ग एक सार विधि को लागू लेकिन इसके कार्यान्वयन को संशोधित करने के लिए अपने उपवर्गों की अनुमति नहीं करना चाहते हैं, कि जहां sealed
भूमिका शुरू होती है एक उदाहरण:।
abstract public class AbstractClass
{
abstract public void DoSomething();
}
public class BaseClass : AbstractClass
{
public sealed override void DoSomething()
{
Console.WriteLine("Did something");
}
}
सूचना है कि जब तक सार विधि (निहित) वर्चुअल है, कंक्रीट बेस क्लास में कार्यान्वयन गैर-वर्चुअल है (sealed
कीवर्ड की वजह से)।
संभावित डुप्लिकेट [क्या प्रत्येक अमूर्त फ़ंक्शन वर्चुअल सी # में सामान्य है?] (Http://stackoverflow.com/questions/391557/is-every-abstract-function-virtual-in-c-in- सामान्य) –