Từ khóa FINAL trong JAVA

0
3266
Từ khóa final trong Java

Từ khóa final trong Java được sử dụng để hạn chế người dùng.

Từ khóa final được sử dụng trong nhiều bối cảnh khác nhau:

  • Biến
  • Phương thức
  • Class

Từ khóa final có thể được áp dụng với các biến, một biến final không có giá trị, nó được gọi là biến final trống hoặc biến cuối cùng chưa được khởi tạo.

Nó chỉ có thể được khởi tạo trong hàm tạo.

Biến final trống có thể là static cũng sẽ chỉ được khởi tạo trong khối static.

Chúng ta sẽ được tìm hiểu chi tiết về những điều này.

Trước tiên, hãy tìm hiểu những điều cơ bản của từ khóa final.

Từ khóa final trong Java
Từ khóa final trong Java

1. Biến final trong Java

Nếu bạn khai báo một biến final, bạn không thể thay đổi giá trị của biến final (Nó sẽ là hằng số).

Ví dụ về biến final trong Java

Có một biến final tocDoToiDa, chúng ta sẽ thay đổi giá trị của biến này.

Nhưng nó không thể thay đổi vì biến final này một khi được gán một giá trị không bao giờ có thể thay đổi.

class XeMay{
  final int tocDoToiDa = 150; // Biến final
  void tocDo(){
    tocDoToiDa = 300;
  }
  public static void main(String args[]){
    XeMay xe = new  XeMay();  
       xe.tocDo();  
    }
}

Kết quả:

Compile Time Error

2. Phương thức final trong Java

Bạn cũng có thể tạo ra một phương thức final.

Nó sẽ không thể bị ghi đè.

Ví dụ về phương thức final trong Java

class XeDap{  
  final void chay(){
    System.out.println("Xe đang chạy");
  }  
}  
     
class ThongNhat extends XeDap{  
  void run(){
    System.out.println("Xe chạy với tốc độ 40km trên giờ");
  }  
     
  public static void main(String args[]){  
    ThongNhat thongnhat = new ThongNhat();  
    thongnhat.chay();  
   }  
}  

Kết quả:

Compile Time Error

3. Class final trong Java

Nếu bạn tạo thông báo một class final. Nó sẽ không thể được kế thừa trong Java.

Ví dụ về Class final trong Java

final class XeMay{}  
  
class HonDa extends XeMay{  
  void run(){
    System.out.println("Chạy với tốc độ 69km trên giờ");
  }  
    
  public static void main(String args[]){  
  HonDa honda = new HonDa();  
  honda.run();  
  }
}

Kết quả:

Compile Time Error

Để hiểu kỹ hơn về từ khóa final trong Java, chúng ta sẽ tìm hiểu về một vài câu hỏi phổ biến với từ khóa final.

Câu hỏi 1: Có thể kế thừa phương thưc final được không?

Có, phương thức final có thể được kế thừa nhưng bạn không thể ghi đè lên nó.

Ví dụ:

class XeDap{
  final void trangThaiLopXe(){
    System.out.println("Đang bị thủng...");
  }  
}  
class ThongNhat extends XeDap{  
   public static void main(String args[]){
     new ThongNhat().trangThaiLopXe();
   }
}

Kết quả:

Đang bị thủng...

Câu hỏi 2: Biến final trống hoặc chưa được khởi tạo là gì?

Một biến final 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.

Nếu bạn muốn tạo một biến được khởi tạo tại thời điểm tạo đối tượng và một khi đã khởi tạo có thể không bị thay đổi, điều này rất hữu ích.

Ví dụ số thẻ của một nhân viên.

Nó chỉ có thể được khởi tạo trong constructor.

Ví dụ về biến final trống

class Student{  
  int id;
  String name;
  final String MASO_SINHVIEN;  
  ...  
}

Câu hỏi 3: Khởi tạo biến fianl trống như thế nào?

Chúng ta có thể khởi tạo biến final trống.

Nhưng chỉ có thể khởi tạo trong constructor.

Ví dụ:

class XeDap{  
  final int tocDoToiDa; // Biến final trống 
    
  XeDap(){  
    toDoToiDa = 40;  
    System.out.println(toDoToiDa);  
  }  
  
  public static void main(String args[]){  
    new XeDap();  
 }  
}  

Kết quả:

40

Câu hỏi 4: Biến final trống có thể là static không?

Có.

Một biến static final không được khởi tạo tại thời điểm khai báo được gọi là blank static final.

>. Tìm hiểu thêm về Static trong Java

>. Tự học Lập trình Java (Toàn tập)

Nó chỉ có thể được khởi tạo trong khối static.

Ví dụ

class A{
  static final int data; // Biến blank static final

  static{data = 50;}

  public static void main(String args[]){  
    System.out.println(A.data);
  }
}

Kết quả:

50

Câu hỏi 5: Tham số final là gì?

Nếu bạn khai báo bất kỳ tham số nào là final, bạn không thể thay đổi giá trị của nó.

class A{  
  int tinhToan(final int n){  
    n = n + 2; //Không thể thay đổi vì n là final 
    n*n*n; 
  }  
  public static void main(String args[]){  
    A a = new A();  
    a.tinhToan(5);  
 }
}

Kết quả:

Compile Time Error

Câu hỏi 6: Chúng ta có thể khai báo một constructor là final được không?

Không.

Chúc mừng bạn đã biết thêm rất nhiều về từ khóa final trong lập trình Java.

Như vậy, bạn đã được học về từ khóa final, bạn có thể tạo biến final, phương thức final và cả class final nữa…

Hãy xem xét kỹ càng các ví dụ để thực sự hiểu rõ về từ khóa final trong Java nhé.

Chúc bạn học tốt!

Một phút quảng cáo: Tham gia ngay Khóa học Java để có cơ hội việc làm thu nhập cao!

JavaDEV