ओवरराइडिंग सबक्लास टाइप के लिए विशिष्ट व्यवहार को परिभाषित करने की क्षमता है, जिसका अर्थ है कि एक सबक्लास अपनी आवश्यकता के आधार पर पैरेंट क्लास मेथड को इम्प्लीमेंट कर सकता है।
ऑब्जेक्ट-ओरिएंटेड शब्दों में, ओवरराइडिंग का अर्थ है मौजूदा मेथड की कार्यक्षमता को ओवरराइड करना।
उदाहरण
आइए एक उदाहरण देखें।
class Animal {
public void move() {
System.out.println("Animals can move");
}
}
class Dog extends Animal {
public void move() {
System.out.println("Dogs can walk and run");
}
}
public class TestDog {
public static void main(String args[]) {
Animal a = new Animal(); // Animal रेफरेंस और ऑब्जेक्ट
Animal b = new Dog(); // Animal रेफरेंस लेकिन Dog ऑब्जेक्ट
a.move(); // Animal क्लास में मेथड चलाता है
b.move(); // Dog क्लास में मेथड चलाता है
}
}आउटपुट
यह निम्नलिखित परिणाम उत्पन्न करेगा −
Animals can move Dogs can walk and run
उपरोक्त उदाहरण में, आप देख सकते हैं कि भले ही b Animal टाइप का है, यह Dog क्लास में move मेथड चलाता है। इसका कारण है: कंपाइल टाइम पर, चेक रेफरेंस टाइप पर किया जाता है। हालांकि, रनटाइम में, JVM ऑब्जेक्ट टाइप का पता लगाता है और उस विशेष ऑब्जेक्ट से संबंधित मेथड को चलाता है।
इसलिए, उपरोक्त उदाहरण में, प्रोग्राम ठीक से कंपाइल होगा क्योंकि Animal क्लास में move मेथड है। फिर, रनटाइम पर, यह उस ऑब्जेक्ट के लिए विशिष्ट मेथड चलाता है।