Trong lập trình Java việc hiểu rõ về các từ khóa như final, static, và static final là rất cần thiết. Ở bài viết trước ta đã tìm hiểu về static, trong bài viết này, chúng ta sẽ tiếp tục tìm hiểu chi tiết về ý nghĩa và cách sử dụng của từ khóa final trong Java.
Từ khóa final trong Java
Trong Java, từ khóa final được sử dụng để tạo ra các hằng số hoặc ngăn chặn sự thay đổi, kế thừa, hoặc ghi đè trong một số trường hợp cụ thể. Final có thể được áp dụng cho biến, phương thức, và lớp, và mỗi trường hợp sử dụng final đều có ý nghĩa riêng.
Các trường hợp sử dụng:
- Biến final: khi một biến được khai báo với từ khoá final, nó chỉ chứa một giá trị duy nhất trong toàn bộ chương trình (hay dễ hiểu hơn gọi là biến hằng).
- Phương thức final: khi một phương thức được khai báo với từ khoá final, các class con kế thừa sẽ không thể ghi đè (override) phương thức này.
- Lớp final: khi từ khoá final sử dụng cho một lớp, lớp này sẽ không thể được kế thừa.
- Biến static final trống: Một biến final mà không được khởi tạo tại thời điểm khai báo được gọi là biến final trống.
Từ khóa final có thể được áp dụng với các biến, một biến final mà không có giá trị nào được gọi là biến final trống hoặc biến final không được khởi tạo. Nó chỉ có thể được khởi tạo trong constructor. Biến final trống cũng có thể là static mà sẽ chỉ được khởi tạo trong khối static. Chúng ta sẽ tìm hiểu chi tiết về những điều này.
Xem việc làm Java mới nhất tại đây
Biến final (Final variable) trong Java
Khi một biến được khai báo với từ khóa final
, giá trị của nó không thể thay đổi sau khi đã được khởi tạo. Nói cách khác, biến đó trở thành một hằng số.
Ví dụ: Trình biên dịch sẽ thông báo lỗi khi bạn cố ý thay đổi giá trị của biến này, bởi vì biến final một khi được gán giá trị thì không bao giờ thay đổi được.
Bạn sẽ nhận được thông báo lỗi khi cố tình thay đổi giá trị của biến final: The final field UsingFinalExample.WEBSITE cannot be assigned.
Ví dụ: Có thể thay đổi giá trị của thuộc tính của một object là final, nhưng bạn không thể khởi tạo lại object đó một lần nữa.
Phương thức final (Final method) trong Java
Khi một phương thức được khai báo là final
, nó không thể bị ghi đè (override) trong các lớp con. Điều này đảm bảo rằng phương thức này không thể thay đổi hành vi bởi bất kỳ lớp nào kế thừa nó.
Ví dụ về không thể ghi đè phương thức final.
Bạn sẽ nhận được thông báo lỗi khi cố tình ghi đè phương thức final: Cannot override the final method from Parent.
Lớp final (Final class) trong Java
Khi một lớp được khai báo là final
, lớp đó không thể bị kế thừa. Điều này có nghĩa là không thể tạo ra bất kỳ lớp con nào từ lớp final
.
Ví dụ về không thể kế thừa lớp final.
Bạn sẽ nhận được thông báo lỗi khi cố tình kế thừa từ lớp final: The type Child cannot subclass the final class Parent.
Biến static final trống trong Java
Một biến static final mà không được khởi tạo tại thời điểm khai báo thì đó là biến static final trống. Nó chỉ có thể được khởi tạo trong khối static và một khi nó đã được khởi tạo thì không thể bị thay đổi.
Ví dụ:
>> Xem thêm bài viết: Từ khóa static trong Java
Một số câu hỏi thường gặp khi đi phỏng vấn liên quan đến từ khóa final
Phương thức final có được kế thừa không?
Trả lời: Có, phương thức final được kế thừa nhưng bạn không thể ghi đè nó.
Biến final trống hoặc không được khởi tạo là gì?
Trả lời: Một biến final mà không được khởi tạo tại thời điểm khai báo được gọi là biến final trống. Biến được khởi tạo tại thời điểm tạo đối tượng và một khi nó đã được khởi tạo thì không thể bị thay đổi.
Ví dụ:
Bạn sẽ nhận được thông báo lỗi khi cố tình thay đổi giá trị của biến final: The final field WEBSITE may already have been assigned.
Tham số final là gì?
Nếu bạn khai báo bất cứ tham số nào là final, thì bạn không thể thay đổi giá trị của nó.
Bạn sẽ nhận được thông báo lỗi khi cố tình thay đổi giá trị của tham số final: The final local variable website cannot be assigned. It must be blank and not using a compound assignment.
Tài liệu tham khảo: https://www.javatpoint.com/final-keyword
Trên đây là những lý thuyết cơ bản về từ khóa final trong Java. Khi tham gia vào các dự án thực tế sẽ có nhiều trường hợp áp dụng khác nhau. Cám ơn các bạn đã theo dõi bài viết. Hẹn gặp lại ở bài viết tiếp theo.