विषय-सूचि
मेथड ओवर राइडिंग (method overriding in java in hindi)
जब किसी जावा प्रोग्राम में समान फंक्शन नेम का इस्तेमाल बेस क्लास और डेराइव्हड क्लास दोनों में किया जाता है, जिसमे उस फंक्शन का डाटा टाइप, पैरामीटर लिस्ट भी समान हों, तो इस परिस्थिति को फंक्शन ओवरराइडिंग (मेथड ओवरराइडिंग) कहा जाता हैं।
दुसरे शब्दों में, जब समान फंक्शन दो बार डिक्लेअर किया जाता हैं-बेस क्लास में और डेराइव्हड क्लास में बेस क्लास से इन्हेरिट किया जाता हैं।
लेकिन जब फंक्शन डेफिनिशन में किसी भी प्रकार के बदलाव नहीं किए जाता हैं। तब जावा कम्पाइलर को सही फंक्शन एक्सीक्यूट करने में परेशानी होती हैं, क्योंकि फंक्शन का नाम, पैरामीटर्स की संख्या, डाटा टाइप समान होते हैं, इसीलिए यह हो सकता हैं की कम्पाइलर एक ही फंक्शन एक्सीक्यूट करे।
जब की हमारे प्रोग्राम में दो फंक्शन लिखे गए हैं। इस प्रक्रिया को ओवरराइडिंग कहा जाता हैं। क्योंकि यहाँ एक फंक्शन को दुसरे फंक्शन ने ओवरराइड किया हैं, इसीलिए इसे फंक्शन ओवरराइडिंग कहा जाता हैं।
फंक्शन ओवरराइडिंग के नियम (function overriding in java in hindi)
- फंक्शन को पास किए गए पैरामीटर्स (आर्गुमेंट्स) की संख्या ओवररिडन फंक्शन को पास किए गए पैरामीटर्स के समान हों।
- दोनों फंक्शन्स का रिटर्न टाइप- डाटा टाइप का समान होना जरुरी हैं।
- बेस क्लास और डेराइव्हड क्लास दोनों में फंक्शन का नाम समान होना चाहिए।
- अगर बेस क्लास के किसी मेथड को इन्हेरिट नहीं किया जा सकता हैं, तो उसे ओवरराइड भी नही किया सकेगा।
- बेस क्लास में डिक्लेअर किए गए “static” फंक्शन्स को ओवरराइड नहीं किया जा सकता, लेकिन उन्हें रि-डिक्लेअर किया जा सकता हैं।
- अगर किसी मेथड को बेस क्लास में फाइनल डिक्लेअर किया गया हों, तो उसे डेराइव्हड क्लास में ओवरराइड नहीं किया जा सकता। मतलब जावा कम्पाइलर बिना किसी दुविधा के बेस क्लास में डिक्लेअर किए गए फाइनल फंक्शन को कॉल किए जाने पर एक्सीक्यूट करेगा।
उदाहरण
class WalkingMan
{
void walk()
{
System.out.printn(“Man walking”);
}
}
class Man extends WalkingMan
{
void walk()
{
System.out.println(“Man walking slowly”);
}
}
class OverridingDemo
{
public static void main(String args[])
{
Man obj=new Man();
obj.walk();
}
}
स्पष्टीकरण
उपर दिए गए उदाहरण में हमने एक क्लास डिक्लेअर किया हैं WalkingMan, जिसमें हमने एक फंक्शन डिक्लेअर किया हैं walk() जिसका डाटा टाइप या रिटर्न टाइप हैं void अब हमने और एक क्लास डिक्लेअर किया जिसमें हम, क्लास WalkingMan के फंक्शन को इन्हेरिट करेंगे।
क्लास Man में हमने कीवर्ड extend की मदत से WalkingMan की प्रॉपर्टीज को इन्हेरिट किया हैं। उस कारन क्लास Man में भी walk() फंक्शन हैं और दोनों क्लास में इस फंक्शन का नाम और डाटा टाइप सेम हैं।
तीसरे क्लास OverridingDemo में हमने मेन फंक्शन में Man इस क्लास का ऑब्जेक्ट तयार किया हैं, अब जब हम प्रोग्राम को कम्पाइल करेंगे। तब क्योंकि, हमने क्लास Man का ऑब्जेक्ट क्रिएट किया हैं और फंक्शन को उसी के आधार पर कॉल किया हैं। तो कम्पाइलर बेस क्लास के फंक्शन को ओवरराइड करते हुए क्लास Man में इन्हेरिट किए गए फंक्शन को एक्सीक्यूट करेगा।
आउटपुट
इस विषय के बारे में यदि आपका कोई भी सवाल या सुझाव है, तो आप उसे नीचे कमेंट में लिख सकते हैं।