Data hiding (ẩn dữ liệu)** là đặc tính quan trọng của Lập trình hướng đối tượng (OOP), ngăn hàm truy cập trực tiếp biểu diễn nội bộ của class. Hạn chế truy cập thành viên class được chỉ định bằng các access modifier (bộ sửa đổi truy cập): public, private, protected trong thân class.
Mặc định, quyền truy cập của thành viên và class là private.
class Base {
public:
// thành viên public
protected:
// thành viên protected
private:
// thành viên private
};
Chi tiết từng modifier
| Modifier | Khả năng truy cập |
|---|---|
public |
Truy cập được từ bất kỳ đâu ngoài class (trong cùng chương trình). Có thể set/get giá trị biến public trực tiếp. |
private |
Không thể truy cập hoặc xem từ ngoài class. Chỉ class đó và friend function/class mới truy cập được. |
protected |
Tương tự private nhưng có thể truy cập trong class con (derived class). |
Ví dụ minh họa
class Vehicle {
public:
std::string brand; // Truy cập 어디서나
protected:
int year; // Truy cập trong class và class con
private:
std::string vin; // Chỉ truy cập trong Vehicle
};
class Car : public Vehicle {
public:
void printInfo() {
std::cout << brand; // OK - public
std::cout << year; // OK - protected (trong class con)
// std::cout << vin; // LỖI - private
}
};
Best practice
- Mặc định dùng
privatecho dữ liệu thành viên (encapsulation). - Cung cấp
publicgetter/setter nếu cần truy cập từ bên ngoài. - Dùng
protectedkhi thiết kế cho kế thừa (inheritance).