Encapsulation, hay đóng gói, là một trong bốn nguyên tắc cơ bản của lập trình hướng đối tượng (OOP), bên cạnh kế thừa (inheritance), đa hình (polymorphism), và trừu tượng (abstraction). Trong Java, encapsulation được sử dụng để giấu đi các chi tiết triển khai của các class từ người dùng và chỉ cho phép truy cập đến các thành viên (fields và methods) thông qua các phương thức của class (như getter và setter). Điều này giúp bảo vệ dữ liệu bên trong một đối tượng khỏi sự truy cập trực tiếp từ bên ngoài, làm cho mã nguồn dễ bảo trì và mở rộng hơn.
Cách Thực Hiện Encapsulation trong Java:
- Khởi tạo biến dưới dạng private: Điều này ngăn chặn truy cập trực tiếp từ bên ngoài class và bảo vệ tính toàn vẹn của dữ liệu.
- Cung cấp các phương thức public để truy cập và cập nhật giá trị của các biến đó (thông qua getter và setter): Những phương thức này cho phép đọc và ghi dữ liệu trong một kiểm soát an toàn, có thể bao gồm logic kiểm tra tính hợp lệ của dữ liệu.
Ví dụ:
public class Employee {
// Biến private, giấu dữ liệu
private String name;
private int age;
// Constructor
public Employee(String name, int age) {
this.name = name;
this.age = age;
}
// Getter và Setter
public String getName() {
return name;
}
public void setName(String name) {
this.name = name; // Có thể thêm logic kiểm tra ở đây
}
public int getAge() {
return age;
}
public void setAge(int age) {
if(age > 18) {
this.age = age; // Chỉ set giá trị nếu thỏa mãn điều kiện
}
}
}
Trong ví dụ trên, các thuộc tính name và age của class Employee được đặt là private, điều này giúp đảm bảo rằng dữ liệu chỉ có thể được truy cập và cập nhật thông qua các phương thức getName(), setName(), getAge(), và setAge(). Điều này giúp ngăn chặn việc truy cập trái phép hoặc không mong muốn vào dữ liệu, đồng thời cho phép thêm các ràng buộc hoặc logic xác thực khi cần thiết.
Lợi Ích của Encapsulation:
- Bảo mật dữ liệu: Giúp bảo vệ dữ liệu khỏi truy cập không mong muốn từ bên ngoài class.
- Dễ dàng bảo trì: Thay đổi nội dung bên trong một class mà không ảnh hưởng đến người dùng của class đó.
- Tăng tính linh hoạt và mở rộng: Có thể thay đổi hoặc thêm logic kiểm tra khi cần thiết mà không làm thay đổi giao diện công khai của class.
Encapsulation là một kỹ thuật quan trọng giúp xây dựng mã nguồn OOP chặt chẽ, an toàn và dễ quản lý.
Comments