कोई भी भाषा जिसे मैं ओवरराइड विधि को लागू करने के लिए लागू करने के बारे में नहीं जानता। वास्तव में, कुछ भाषाएं ओवरराइडिंग विधियों की अनुमति देती हैं जो कि अधिक उपयोग करने योग्य नहीं हैं (जैसे कि new
C # में कीवर्ड का उपयोग करना )। हालाँकि, इसके करीब आने के दो तरीके हैं।
पहला एक अयोग्य विधि का निर्माण करना है (जैसे कि एक जिसमें virtual
C # में कीवर्ड की कमी होती है या एक जिसमें final
जावा में कीवर्ड होता है) एक अतिव्यापक कॉल करता है जिसे क्लास के बाहर से नहीं बुलाया जा सकता (जैसे protected
C #, Java या C ++ में)।
class C
A
statement1
F
statement3
protected virtual F
statement2
तथा
class D inherits C
protected override F
statement4
C.F()
C
ओवरराइड करने वाली कक्षाएं F
इसके व्यवहार को ओवरराइड करने और संशोधित करने के लिए स्वतंत्र हैं लेकिन क्लास के बाहर से कॉल करने वाले केवल इसके माध्यम से एक्सेस करते हैं A
।
संपादित करें: जैसा कि अन्य ने बताया है, इसे टेम्प्लेट विधि कहा जाता है ।
दूसरा तरीका एक भाषा का उपयोग करना है जो कोड अनुबंध के साथ एफिल या सी # की तरह, बेस क्लास में निर्दिष्ट पूर्व शर्त और पोस्टफोर्म्स को लागू करता है। यह बेस क्लास को बुलाए जाने के लिए मजबूर नहीं करेगा लेकिन ओवरराइड पद्धति को एक ही स्टेटमेंट करने के लिए मजबूर किया जा सकता है। पहलुओं का उपयोग करना भी मदद कर सकता है यदि भाषा पहलुओं को विरासत में प्राप्त करने की अनुमति देती है।