คำตอบคือ ได้ หากเมธอดของ 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) ไม่มีข้อจำกัด