การ Override (การโอเวอร์ไรด์) คือความสามารถในการกำหนดพฤติกรรมที่เฉพาะเจาะจงต่อประเภทของซับคลาส (subclass type) หมายความว่าซับคลาสสามารถนำเมธอดของคลาสแม่ไปใช้งานตามความต้องการของมันได้
ในทางวัตถุ-เชิงวัตถุ (object-oriented terms) การ 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"); } } 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 the method in Animal class b.move(); // runs the method in Dog class } }ผลลัพธ์
นี่จะผลิตผลลัพธ์ดังนี้:
Animals can move Dogs can walk and run
ในตัวอย่างข้างต้น คุณสามารถเห็นได้ว่า แม้ b จะเป็นประเภทของ Animal มันก็รันเมธอด move ในคลาส Dog เหตุผลคือ: ในขณะคอมไพล์ การตรวจสอบทำบนประเภทอ้างอิง อย่างไรก็ตาม ในรันไทม์ JVM จะระบุประเภทออบเจ็กต์และจะรันเมธอดที่เป็นของออบเจ็กต์เฉพาะนั้น ดังนั้น ในตัวอย่างข้างต้น โปรแกรมจะคอมไพล์ได้อย่างถูกต้อง เนื่องจากคลาส Animal มีเมธอด move แล้วในรันไทม์ มันจะรันเมธอดที่เฉพาะเจาะจงสำหรับออบเจ็กต์นั้น