Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

Java Runtime Polymorphism พร้อมการสืบทอดหลายระดับ


การแทนที่เมธอดเป็นตัวอย่างของความแตกต่างระหว่างรันไทม์ ในการแทนที่เมธอด คลาสย่อยจะแทนที่เมธอดที่มีลายเซ็นเดียวกันกับในซูเปอร์คลาส ในช่วงเวลารวบรวม จะมีการตรวจสอบประเภทอ้างอิง อย่างไรก็ตาม ในรันไทม์ JVM จะคำนวณประเภทอ็อบเจ็กต์และจะรันเมธอดที่เป็นของอ็อบเจกต์นั้น

เราสามารถแทนที่เมธอดที่ระดับของการสืบทอดหลายระดับใดก็ได้ ดูตัวอย่างด้านล่างเพื่อทำความเข้าใจแนวคิด −

ตัวอย่าง

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.