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

จะเกิดอะไรขึ้นเมื่อเราพยายามแทนที่เมธอดสุดท้ายของ superclass ใน Java?


วิธีการใด ๆ ที่ประกาศเป็น ขั้นสุดท้าย ในซูเปอร์คลาส ไม่สามารถแทนที่ได้ โดยคลาสย่อย หากเราพยายามลบล้างวิธีสุดท้าย ของ super class เราจะได้รับข้อผิดพลาดใน Java

กฎสำหรับการนำวิธีการแทนที่ไปใช้

  • การประกาศเมธอดควรเหมือนกับเมธอดที่จะถูกแทนที่
  • คลาส (คลาสย่อย) ควรขยายคลาสอื่น (ซูเปอร์คลาส) ก่อนที่จะลองแทนที่ด้วยซ้ำ
  • คลาสย่อยไม่สามารถแทนที่วิธีสุดท้ายของ Super Class ได้

ตัวอย่าง

class Car {
   public void brake() {
      System.out.println("brake() method of Car");
   }
   public final void accelerate() {
      System.out.println("accelerate() method of Car");
   }
}
public class BenzCar extends Car {
   public static void main(String[] args) {
      BenzCar benz = new BenzCar();
      benz.accelerate();
      benz.brake();
   }
   public void accelerate() {
      System.out.println("accelerate() method of Benz Car");
   }
}

ในตัวอย่างข้างต้น หากเราพยายามแทนที่ วิธีสุดท้าย (วิธีเร่ง()) ของ ซูเปอร์คลาส . คอมไพเลอร์จะ แสดงข้อผิดพลาด . ดังนั้นเราจึงไม่ลบล้างเมธอดสุดท้ายของซูเปอร์คลาสใน Java

ผลลัพธ์

overridden method is final