Method overriding là ví dụ của runtime polymorphism. Trong overriding, subclass override method cùng signature với superclass. Compile-time kiểm tra trên reference type. Tuy nhiên runtime, JVM xác định object type và chạy method thuộc object đó.
Ví dụ
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 reference and object
Animal b = new Dog(); // Animal reference but Dog object
a.move(); // runs method in Animal class
b.move(); // runs method in Dog class
}
}
Kết quả
Animals can move Dogs can walk and run