ExceptionHandling và Ghi đè phương thức trong Java
Có một số qui tắc bạn nên biết khi nói đến ghi đè phương thức với xử lý ngoại lệ. Đó là: Nếu phương thức của lớp cha không khai báo một exception: phương thức ghi đè của lớp con không thể khai báo Checked Exception nhưng có thể khai báo Unchecked Exception. Qui tắc 1 : Nếu ...
Có một số qui tắc bạn nên biết khi nói đến ghi đè phương thức với xử lý ngoại lệ. Đó là:
Nếu phương thức của lớp cha không khai báo một exception: phương thức ghi đè của lớp con không thể khai báo Checked Exception nhưng có thể khai báo Unchecked Exception.
Qui tắc 1: Nếu phương thức của lớp cha không khai báo một exception: phương thức ghi đè của lớp con không thể khai báo Checked Exception.
import java.io.*; class Parent{ void msg(){System.out.println("parent");} } class TestExceptionChild extends Parent{ void msg()throws IOException{ System.out.println("TestExceptionChild"); } public static void main(String args[]){ Parent p=new TestExceptionChild(); p.msg(); } }
Chạy chương trình sẽ cho Compile Time Error.
Qui tắc 2: Nếu phương thức của lớp cha không khai báo một exception: phương thức ghi đè của lớp con không thể khai báo Checked Exception nhưng có thể khai báo Unchecked Exception.
import java.io.*; class Parent{ void msg(){System.out.println("parent");} } class TestExceptionChild1 extends Parent{ void msg()throws ArithmeticException{ System.out.println("child"); } public static void main(String args[]){ Parent p=new TestExceptionChild1(); p.msg(); } }
Chạy chương trình sẽ cho kết quả:
child
Nếu phương thức lớp cha khai báo một exception: phương thức ghi đè của lớp con có thể khai báo cùng exception đó, exception của lớp con, hoặc không khai báo exception nào, nhưng không thể khai báo exception cha.
1. Ví dụ trường hợp phương thức ghi đè của lớp con khai báo exception cha.
import java.io.*; class Parent{ void msg()throws ArithmeticException{System.out.println("parent");} } class TestExceptionChild2 extends Parent{ void msg()throws Exception{System.out.println("child");} public static void main(String args[]){ Parent p=new TestExceptionChild2(); try{ p.msg(); }catch(Exception e){} } }
Chạy chương trình sẽ cho Compile Time Error.
2. Ví dụ trường hợp phương thức ghi đè của lớp con khai báo cùng exception đó.
import java.io.*; class Parent{ void msg()throws Exception{System.out.println("parent");} } class TestExceptionChild3 extends Parent{ void msg()throws Exception{System.out.println("child");} public static void main(String args[]){ Parent p=new TestExceptionChild3(); try{ p.msg(); }catch(Exception e){} } }
Chạy chương trình sẽ cho kết quả:
child
3. Ví dụ trường hợp phương thức ghi đè của lớp con khai báo exception của lớp con.
import java.io.*; class Parent{ void msg()throws Exception{System.out.println("parent");} } class TestExceptionChild4 extends Parent{ void msg()throws ArithmeticException{System.out.println("child");} public static void main(String args[]){ Parent p=new TestExceptionChild4(); try{ p.msg(); }catch(Exception e){} } }
Chạy chương trình sẽ cho kết quả:
child
3. Ví dụ trường hợp phương thức ghi đè của lớp con không khai báo exception nào.
import java.io.*; class Parent{ void msg()throws Exception{System.out.println("parent");} } class TestExceptionChild5 extends Parent{ void msg(){System.out.println("child");} public static void main(String args[]){ Parent p=new TestExceptionChild5(); try{ p.msg(); }catch(Exception e){} } }
Chạy chương trình sẽ cho kết quả:
child
Mọi người cho thể tham gia khóa học thứ 6 của vietjackteam (đang tuyển sinh) vào đầu tháng 03/2018 do anh Nguyễn Thanh Tuyền, admin vietjack.com trực tiếp giảng dạy tại Hà Nội. Chi tiết nội dung khóa học tham khỏa link : .Các bạn học CNTT, điện tử viễn thông, đa phương tiện, điện-điện tử, toán tin có thể theo học khóa này. Số lượng các công việc Java hoặc .NET luôn gấp ít nhất 3 lần Android hoặc iOS trên thị trường tuyển dụng.
Các bạn ở xa học không có điều kiện thời gian có thể tham dự khóa Java online để chủ động cho việc học tập. Trong tháng 4/2018, VietJack khuyến mại giá SỐC chỉ còn 150k cho khóa học, liên hệ facebook admin fb.com/tuyen.vietjack để thanh toán chuyển khoản hoặc thẻ điện thoại, khóa học bằng Tiếng Việt với gần 100 video, các bạn có thể chủ động bất cứ lúc nào, và xem mãi mãi. Thông tin khóa học tại . Khóa học có rating 4.7/5 trên udemy từ nhận xét của các bạn học viên.
Mọi người có thể xem demo nội dung khóa học tại địa chỉ
Loạt bài hướng dẫn của chúng tôi dựa một phần trên nguồn tài liệu của: Tutorialspoint.com
Follow fanpage của team hoặc facebook cá nhân Nguyễn Thanh Tuyền để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.
Bài học Java phổ biến tại vietjack.com: