Java - Đóng gói
Encapsulationlà một trong bốn khái niệm OOP cơ bản. Ba yếu tố còn lại là kế thừa, đa hình và trừu tượng.
Đóng gói trong Java là một cơ chế gói dữ liệu (biến) và mã tác động lên dữ liệu (phương thức) lại với nhau như một đơn vị duy nhất. Trong đóng gói, các biến của một lớp sẽ bị ẩn khỏi các lớp khác và chỉ có thể được truy cập thông qua các phương thức của lớp hiện tại của chúng. Do đó, nó còn được gọi làdata hiding.
Để đạt được tính đóng gói trong Java -
Khai báo các biến của một lớp là private.
Cung cấp các phương thức setter và getter công khai để sửa đổi và xem các giá trị của biến.
Thí dụ
Sau đây là một ví dụ minh họa cách đạt được tính năng Đóng gói trong Java:
/* File name : EncapTest.java */
public class EncapTest {
private String name;
private String idNum;
private int age;
public int getAge() {
return age;
}
public String getName() {
return name;
}
public String getIdNum() {
return idNum;
}
public void setAge( int newAge) {
age = newAge;
}
public void setName(String newName) {
name = newName;
}
public void setIdNum( String newId) {
idNum = newId;
}
}
Phương thức public setXXX () và getXXX () là các điểm truy cập của các biến thể hiện của lớp EncapTest. Thông thường, các phương pháp này được gọi là getters và setters. Do đó, bất kỳ lớp nào muốn truy cập các biến nên truy cập chúng thông qua các getters và setters này.
Các biến của lớp EncapTest có thể được truy cập bằng chương trình sau:
/* File name : RunEncap.java */
public class RunEncap {
public static void main(String args[]) {
EncapTest encap = new EncapTest();
encap.setName("James");
encap.setAge(20);
encap.setIdNum("12343ms");
System.out.print("Name : " + encap.getName() + " Age : " + encap.getAge());
}
}
Điều này sẽ tạo ra kết quả sau:
Đầu ra
Name : James Age : 20
Lợi ích của việc đóng gói
Các trường của một lớp có thể được đặt ở chế độ chỉ đọc hoặc chỉ ghi.
Một lớp có thể có toàn quyền kiểm soát những gì được lưu trữ trong các trường của nó.