1. Câu hỏi
2. Phân tích
Đây thực sự là 1 câu hỏi khó, cần cả kiến thức về kế thừa, override, hiểu về Exception và các lớp con của nó, hiểu
- Phân tích Sub class Sub class kế thừa Super class, trong method m1() , throw new FileNotFoundException() hoàn toàn hợp lệ vì FileNotFoundException là class con của IOException https://docs.oracle.com/javase/8/docs/api/java/io/FileNotFoundException.html
abstract class Super { public abstract void m1() throws IOException;
} class Sub extends Super { @Override public void m1() throws IOException { throw new FileNotFoundException(); }
}
- Phân tích code trong hàm main Biến s có kiểu dữ liệu Super, hàm m1 trong đó khai báo throw IOException, nhưng trong catch chỉ bắt FileNotFoundException -> Compilation error
Super s = new Sub(); try { s.m1(); } catch (FileNotFoundException e) { System.out.print("M"); } finally { System.out.print("N"); }
3. Kết luận
Bạn có thể gõ code vào IDE để chạy lại và kiểm tra Source cho câu hỏi