Tính bao đóng trong Java là một tiến trình đóng gói code và dữ liệu lại với nhau vào trong một đơn vị unit đơn, ví dụ như một gói bột giặt là hỗn hợp của các hạt bột giặt khác nhau. Chúng ta có thể tạo một lớp được bao đóng hoàn toàn trong Java bằng việc tạo tất cả thành viên dữ liệu của lớp là private. Bây giờ, chúng ta sử dụng phương thức setter và getter để thiết lập và lấy dữ liệu trong nó. Lớp Java Bean là ví dụ về một lớp được bao đóng hoàn toàn.
Tính bao đóng là kỹ thuật tạo một trường của lớp private và cung cấp khả năng truy cập trường này qua các phương thức pullic. Nếu một trường được khai báo là private, nó không thể được truy cập bởi bên ngoài lớp, do đó có thể che dấu các trường có lớp này. Vì lý do này, tính bao đóng được ám chỉ như việc dấu dữ liệu (data hiding).
Tính bao đóng có thể được mô tả như là một tấm bảo vệ code và tránh code và dữ liệu của bạn bị truy cập một cách ngẫu nhiên bởi các code khác bên ngoài class. Truy cập dữ liệu và code được điều khiển một cách chặt chẽ bởi một interface.
Lợi thế của tính bao đóng trong Java
Bởi cung cấp phương thức setter hoặc getter, bạn có thể làm cho lớp là read-only hoặc write-only. Nó cung cấp cho bạn sự điều khiển thông qua dữ liệu. Giả sử bạn muốn thiết lập giá trị của id là lớn hơn 100, thì bạn có thể viết biểu thức logic bên trong phương thức setter.
- Tất cả các lớp có thể có chế độ chỉ đọc hoặc chỉ ghi (chỉ có hàm getter hoặc setter)
- Một lớp có thể có toàn bộ điều khiển thông qua những gì được lưu giữ trong các trường của nó.
- Người sử dụng của class không biết cách các class lưu trữ dữ liệu. Một class có thể thay đổi kiểu dữ liệu của một trường và người dùng class không cần sự thay đổi trong code.
Ví dụ
Bạn theo dõi ví dụ sau về tính bao đóng mà chỉ có một trường với phương thức setter và getter của nó.
//Luu duoi dang Student.java package com.hoctv; public class Student{ private String name; public String getName(){ return name; } public void setName(String name){ this.name=name } } -------------------------------------------- //Luu duoi dang Test.java package com.hoctv; class Test{ public static void main(String[] args){ Student s=new Student(); s.setname("hoctvteam"); System.out.println(s.getName()); } }
- Để biên dịch: javac -d . Test.java
- Để chạy: java com.hoctv.Test
Chương trình Java trên sẽ cho kết quả:
output: hoctvteam