स्टेटिक विरासत उदाहरण विरासत की तरह काम करता है। सिवाय इसके कि आपको स्थैतिक तरीकों को वर्चुअल या अमूर्त बनाने की अनुमति नहीं है।सी # आभासी (या अमूर्त) स्थैतिक विधियां
class Program {
static void Main(string[] args) {
TestBase.TargetMethod();
TestChild.TargetMethod();
TestBase.Operation();
TestChild.Operation();
}
}
class TestBase {
public static void TargetMethod() {
Console.WriteLine("Base class");
}
public static void Operation() {
TargetMethod();
}
}
class TestChild : TestBase {
public static new void TargetMethod() {
Console.WriteLine("Child class");
}
}
हो जाएगा ताकि उत्पादन:
Base class
Child class
Base class
Base class
लेकिन मैं चाहता हूँ:
Base class
Child class
Base class
Child class
यदि यह मैं स्थिर तरीकों पर, मैं TargetMethod आभासी होगा सकता है और यह काम करना होगा। लेकिन क्या एक ही प्रभाव पाने के लिए चारों ओर एक काम है?
संपादित करें: हाँ, मैं बाल वर्ग में ऑपरेशन की प्रतिलिपि डाल सकता हूं, लेकिन इसके लिए प्रत्येक बच्चे में बड़ी संख्या में कोड कॉपी और चिपकाना होगा, जो मेरे मामले में लगभग 35 वर्ग, एक रखरखाव दुःस्वप्न है।
आप स्थिर कार्यों का उपयोग क्यों कर रहे हैं? – munificent
आप लुकअप और नाम छिपाने के साथ विरासत को भ्रमित कर रहे हैं। –
संभावित डुप्लिकेट [क्यों मैं सी # में सार स्थिर विधियों नहीं कर सकता?] (Https://stackoverflow.com/questions/3284/why-cant-i-have-abstract-static-methods-in-c) –