การแทนที่คือความสามารถในการกำหนดพฤติกรรมเฉพาะสำหรับประเภทคลาสย่อย ซึ่งหมายความว่าคลาสย่อยสามารถใช้เมธอดคลาสพาเรนต์ได้ตามความต้องการ
ในแง่วัตถุ การแทนที่หมายถึงการแทนที่ฟังก์ชันการทำงานของวิธีการที่มีอยู่
ตัวอย่าง
มาดูตัวอย่างกัน
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 จะเป็นสัตว์ประเภทหนึ่ง แต่ก็ใช้วิธีย้ายในคลาส Dog เหตุผลคือ ในเวลารวบรวม จะมีการตรวจสอบประเภทอ้างอิง อย่างไรก็ตาม ในรันไทม์ JVM จะคำนวณประเภทอ็อบเจ็กต์และจะรันเมธอดที่เป็นของอ็อบเจ็กต์นั้น
ดังนั้นในตัวอย่างข้างต้น โปรแกรมจะทำการคอมไพล์อย่างถูกต้องเนื่องจากคลาส Animal มีเมธอดย้าย จากนั้น รันเมธอดเฉพาะสำหรับอ็อบเจกต์นั้น ณ รันไทม์