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

Subclass สามารถ Override เมธอดโดยไม่โยน Exception ได้หรือไม่ใน Java?

คำตอบคือ ได้ หากเมธอดของ Superclass โยน Checked Exception ตัวใดตัวหนึ่ง Subclass สามารถ Override เมธอดนั้น โดยไม่โยน Exception ใดๆ เลย ก็ได้ โปรแกรมจะคอมไพล์และรันผ่านได้ปกติ

ตัวอย่างโค้ด

import java.io.FileNotFoundException;

abstract class Super {
    public void sampleMethod() throws FileNotFoundException {
        System.out.println("Method of superclass");
    }
}

public class ExceptionsExample extends Super {
    // Override โดยไม่โยน exception
    public void sampleMethod() {
        System.out.println("Method of Subclass");
    }

    public static void main(String args[]) {
        ExceptionsExample obj = new ExceptionsExample();
        obj.sampleMethod();
    }
}

ผลลัพธ์

Method of Subclass

หลักการสำคัญ

  • Subclass อาจโยน Exception น้อยกว่า หรือ ไม่โยนเลย ก็ได้
  • แต่ ห้ามโยน Exception ที่เป็น Supertype ของ Exception ที่ Superclass โยน (ดูรายละเอียดในบทความถัดไป)
  • กฎนี้ใช้กับ Checked Exception เท่านั้น ส่วน Unchecked Exception (RuntimeException) ไม่มีข้อจำกัด