วิธีการใด ๆ ที่ประกาศเป็น ขั้นสุดท้าย ในซูเปอร์คลาส ไม่สามารถแทนที่ได้ โดยคลาสย่อย หากเราพยายามลบล้างวิธีสุดท้าย ของ 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