การ override เมธอดเป็นตัวอย่างของพอลิморฟิซึมรันไทม์ ในการ override เมธอด คลาสย่อยจะ override เมธอดที่มีลายเซ็นเดียวกับในคลาสแม่ของมัน ในขณะคอมไพล์ การตรวจสอบทำบนประเภทอ้างอิง อย่างไรก็ตาม ในรันไทม์ JVM จะระบุประเภทออบเจ็กต์และจะรันเมธอดที่เป็นของออบเจ็กต์เฉพาะนั้น
เราสามารถ override เมธอดได้ที่ระดับใดก็ได้ของการสืบทอดหลายระดับ ดูตัวอย่างด้านล่างเพื่อเข้าใจแนวคิด:
ตัวอย่าง
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"); } } class Puppy extends Dog { public void move() { System.out.println("Puppy can move."); } } public class Tester { public static void main(String args[]) { Animal a = new Animal(); // Animal reference and object Animal b = new Puppy(); // Animal reference but Puppy object a.move(); // runs the method in Animal class b.move(); // runs the method in Puppy class } }ผลลัพธ์
Animals can move Puppy can move.