में नए संशोधक द्वारा छुपाए जाने से बेस क्लास विधि को रोकने से रोकें मेरी स्थिति यहां है। जावा में मैं आधार/सुपर क्लास में एक विधि को अंतिम रूप में चिह्नित कर सकता हूं और व्युत्पन्न वर्ग एक ही हस्ताक्षर की विधि को मास्क कर सकता है। सी # में, नया कीवर्ड किसी को भी उसी वर्ग के साथ एक विधि बनाने के लिए मेरी कक्षा विरासत में मदद करता है।सी # व्युत्पन्न वर्ग
नीचे मेरा उदाहरण देखें। मुझे orignal रखने की जरूरत है। MyClass सार्वजनिक तो कृपया एक जवाब के रूप में सुझाव नहीं है। ऐसा लगता है कि जावा से सी #
public class orignal.MyClass{
public void MyMethod()
{
// Do something
}
}
class fake.MyClass: orignal.MyClass {
// How to prevent the following
public new void MyMethod()
{
// Do something different
}
}
संपादित करें: डुप्लिकेट नहीं।
सभी उत्तरों का सुझाव है, किसी विधि को व्युत्पन्न कक्षा में छुपा/छायांकित होने से रोकने के लिए संभव नहीं है। कुछ पुराने जावा कोड को सी # में माइग्रेट करते समय यह स्पष्ट हो गया। जावा में एक अंतिम विधि किसी भी व्युत्पन्न कक्षा में किसी भी विधि हस्ताक्षर का उपयोग नहीं करने देगी। हालांकि अधिकांश परिदृश्यों में यह बहुत अच्छा है कि सी # व्युत्पन्न वर्ग में एक ही हस्ताक्षर की विधि की अनुमति देता है, यदि आवश्यक हो तो ऐसे व्यवहार को रोकने के लिए यह बहुत अच्छा होगा।
संभावित डुप्लिकेट [सी # में जावा के फाइनल के बराबर क्या है?] (Http://stackoverflow.com/questions/1327544/what-is-the-equivalent-of-javas-final-in-c)। .. –
जैसा कि @Reed द्वारा उल्लेख किया गया है, 'यह शायद ही कभी मायने रखता है'। आपका कोड अभी भी मूल विधि को कॉल करेगा। –
डुप्लिकेट नहीं। मैं समकक्ष के लिए नहीं पूछ रहा हूँ। मैं सुझाव दे रहा हूं कि इस उपयोग के मामले में कोई अस्तित्व में नहीं है। – JAson