Từ khóa final trong Java
Từ khóa final trong Java được sử dụng để hạn chế thao tác của người dùng. Để tìm hiểu về từ khóa final trong Java, mời bạn đọc cùng eLib.VN tham khảo bài viết dưới đây.
1. Biến final trong Java
Nếu bạn tạo bất cứ biến nào là final, bạn không thể thay đổi giá trị của biến final (nó sẽ là hằng số).
Ví dụ của biến final trong Java
Giả sử có một biến final có tên là speedlimit, chúng ta đang thay đổi giá trị của biến này, nhưng nó không thể bị thay đổi bởi vì một khi biến final đã được gán giá trị thì không bao giờ bị thay đổi.
class Bike9 {
final int speedlimit = 90; //bien final
void run() {
speedlimit = 400;
}
public static void main(String args[]) {
Bike9 obj = new Bike9();
obj.run();
}
} //phan cuoi cua lop
2. Phương thức final trong Java
Nếu bạn tạo bất cứ phương thức nào là final, thì bạn không thể ghi đè nó.
Ví dụ của phương thức final
class Bike {
final void run() {
System.out.println("running");
}
}
class Honda extends Bike {
void run() {
System.out.println("Chay an toan voi 100kmph");
}
public static void main(String args[]) {
Honda honda = new Honda();
honda.run();
}
}
3. Lớp final trong Java
Nếu bạn tạo bất cứ lớp nào là final thì bạn không thể kế thừa nó.
final class Bike {}
class Honda1 extends Bike {
void run() {
System.out.println("Chay an toan voi 100kmph");
}
public static void main(String args[]) {
Honda1 honda = new Honda();
honda.run();
}
}
Phương thức final có được kế thừa không?
Có, phương thức final được kế thừa nhưng bạn không thể ghi đè nó. Ví dụ:
class Bike {
final void run() {
System.out.println("dang chay...");
}
}
class Honda2 extends Bike {
public static void main(String args[]) {
new Honda2().run();
}
}
Biến final trống hoặc không được khởi tạo là gì?
Nó chỉ có thể được khởi tạo trong Constructor. Sau đây là ví dụ về biến final trống:
class Student {
int id;
String name;
final String PAN_CARD_NUMBER;...
}
Chúng ta có thể khởi tạo biến final trống không?
Có, nhưng chỉ trong Constructor. Ví dụ:
class Bike10 {
final int speedlimit; //bien final trong
Bike10() {
speedlimit = 70;
System.out.println(speedlimit);
}
public static void main(String args[]) {
new Bike10();
}
}
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.
Dưới đây là ví dụ về biến static final trống trong Java:
class A {
static final int data; //bien static final trong
static {
data = 50;
}
public static void main(String args[]) {
System.out.println(A.data);
}
}
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ó.
class Bike11 {
int cube(final int n) {
n = n + 2; //khong the duoc thay doi khi n la final
n * n * n;
}
public static void main(String args[]) {
Bike11 b = new Bike11();
b.cube(5);
}
}
Chạy chương trình trên sẽ cho Compile Time Error.
Chúng ta có thể khai báo một constructor final không?
Không, bởi vì constructor không bao giờ được kế thừa.
Trên đây là bài viết của eLib.VN về từ khóa final trong Java. Sử sụng từ khóa final rất hữu ích khi bạn muốn xây dựng các gói thư viện Java và xuất bản nó cho nhiều người dùng. Khi đó, việc cho phép một lớp khác có quyền kế thừa, hay override một phương thức nào đó của lớp hay không, là quyền ở bạn. Chúc các bạn thành công!
Tham khảo thêm
- doc Đối tượng và lớp (class) trong Java
- doc Phương thức trong Java
- doc Nạp chồng phương thức trong Java
- doc Constructor trong Java
- doc Từ khóa static trong Java
- doc Từ khóa this trong Java
- doc Tính kế thừa trong Java - Từ khóa extends và implements trong Java
- doc Ghi đè phương thức trong Java
- doc Kiểu trả về covariant trong Java
- doc Từ khóa super trong Java
- doc Tính đa hình trong Java
- doc Gắn kết tĩnh và Gắn kết động (Dynamic Binding) trong Java
- doc Toán tử instanceof trong Java
- doc Tính trừu tượng trong Java
- doc Abstract Class trong Java
- doc Interface trong Java
- doc Phân biệt lớp abstract và Interface trong Java
- doc Package trong Java
- doc Các kiểu Modifier trong Java
- doc Access Modifier trong Java
- doc Non Access Modifier trong Java
- doc Tính đóng gói trong Java
- doc Lớp Object trong Java
- doc Nhân bản đối tượng trong Java
- doc Mảng (Array) trong Java
- doc Lớp Wrapper trong Java
- doc Truyền giá trị và tham chiếu trong Java
- doc Từ khóa strictfp trong Java
- doc Regular Expression trong Java