Xin chào hôm nay bạn sẽ được tìm hiểu về từ khóa final trong Java. Với final có thể áp dụng cho lớp (Class), phương thức (Method), biến (Variables). Vậy thì cụ thể thằng final này dùng để làm gì và dùng nó như thế nào? Mời bài đọc tiếp bài sau đây.
Từ khóa Final trong Java là gì?
Final tạm hiểu là ngăn chặn việc sửa đổi dùng cho lớp, phương thức và biến.
Trong lập trình hướng đối tượng không phải tất cả dữ liệu đều được chia sẻ. Những thông tin cần bảo mật sẽ phải che giấu để đảm bảo an toàn.
Biến final trong Java
Biến có từ khoá final được hiểu là một hằng số. Điều đó khiến chúng ta không thể thay đổi giá trị của các biến final sau khi khởi tạo.
Hãy chạy ví dụ sau:
public class Test { final int numberOne = 10; public static void main(String[] args) { Test test = new Test(); test.numberOne = 15; // compile error System.out.println(test.numberOne); } }
Trong ví dụ trên mình đã khai báo một biến numberOne với giá trị là 10, sau đó truy cập vào để cố gắng sửa đổi giá trị. Nhưng final đã chặn lại việc đó. Gây nên lỗi trong JVM.
Phương thức final trong Java
Lớp con có thể kế thừa và sử dụng phương thức nhưng không thể ghi đè (override) lên được.
Tạo ra một file là Test.java
public class Test { final void read() { System.out.println("Tôi đang đọc sách"); } }
Tiếp theo tạo file extendsTest.Java
public class extendsTest extends Test { void read() { System.out.println("Đọc cái gì vậy?"); } public static void main(String args[]) { extendsTest object= new extendsTest(); object.read(); } }
Với ví dụ trên mình đã sử dụng extendsTest để kế thừa Test. Và cố gắng ghi đè (Overriding) nhưng hoàn toàn thất bại. Do từ khóa final đã chặn ghi đè. Để xác thực bạn hãy xóa final đi xem lỗi có còn nữa không.
Lớp final trong Java
Một lớp khi khai báo với từ khóa final sẽ không thể kế thừa được.
Hãy chạy ví dụ sau:
Test.java
final class Test{ String exam = "Đây là một ví dụ về Class Final"; void display() { System.out.println(exam); } }
extendsTest.java
public class extendsTest extends Test{ public static void main(String[] args) { extendsTest demo = new extendsTest(); demo.display(); } }
Để không lỗi nữa bạn hãy xóa final đi.
Trên đây chúng ta đã cùng nhau điểm qua về Class, Method và biến sử dụng từ khóa Final trong Java. Bạn có thể final có thú vị không? Nếu thấy hay hãy ghi nhớ và ghi chép lại để lập trình Java tốt hơn nhé.