Ghi đè phương thức là một ví dụ về tính đa hình thời gian chạy. Trong ghi đè phương thức, một lớp con sẽ ghi đè một phương thức có cùng chữ ký với trong lớp cha của nó. Trong thời gian biên dịch, việc kiểm tra được thực hiện trên kiểu tham chiếu. Tuy nhiên, trong thời gian chạy, JVM tìm ra loại đối tượng và sẽ chạy phương thức thuộc về đối tượng cụ thể đó.
Chúng ta có thể ghi đè một phương thức ở bất kỳ mức kế thừa đa cấp nào. Xem ví dụ dưới đây để hiểu khái niệm -
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"); } } 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 } }
Đầu ra
Animals can move Puppy can move.