Encapsulation nghĩa là gói dữ liệu cùng các method thao tác trên nó vào một đơn vị (một class) và ẩn trạng thái nội bộ sau một interface công khai được kiểm soát. Bên gọi tương tác qua các method, không phải bằng cách chọc thẳng vào các field thô.
Tại sao phải ẩn trạng thái
Nếu bất kỳ ai cũng có thể thay đổi một field trực tiếp, bạn không bao giờ đảm bảo được object luôn hợp lệ. Encapsulation cho phép class tự thực thi các bất biến (invariant) của chính nó.
{
balance;
{
(amount <= )
();
(amount > balance)
();
balance -= amount;
}
{ balance; }
}
