Khái niệm về kiểm soát truy cập (Access Specifiers) trong C++
**Kiểm soát truy cập** trong C++ là một tính năng cho phép lập trình viên xác định quyền truy cập của các thành viên (biến và hàm) trong một lớp. Điều này giúp bảo vệ dữ liệu và kiểm soát cách mà các đối tượng tương tác với nhau. C++ cung cấp ba loại kiểm soát truy cập chính: `public`, `private`, và `protected`.
### Các loại kiểm soát truy cập
1. **public**:
- **Khái niệm**: Các thành viên được khai báo là `public` có thể được truy cập từ bất kỳ đâu, bao gồm cả bên ngoài lớp.
- **Sử dụng**: Thường dùng cho các phương thức hoặc biến mà bạn muốn cho phép người dùng hoặc các lớp khác truy cập trực tiếp.
2. **private**:
- **Khái niệm**: Các thành viên được khai báo là `private` chỉ có thể được truy cập từ bên trong lớp mà chúng được định nghĩa. Không thể truy cập từ bên ngoài hoặc từ các lớp dẫn xuất.
- **Sử dụng**: Thường dùng để bảo vệ dữ liệu nhạy cảm, không muốn cho phép truy cập trực tiếp từ bên ngoài.
3. **protected**:
- **Khái niệm**: Các thành viên được khai báo là `protected` có thể được truy cập từ bên trong lớp và từ các lớp dẫn xuất, nhưng không thể truy cập từ bên ngoài.
- **Sử dụng**: Thích hợp cho các thành viên mà bạn muốn chia sẻ với các lớp dẫn xuất nhưng vẫn giữ kín với phần còn lại của chương trình.
### Sự khác nhau giữa public, private và protected
| Tiêu chí | public | private | protected |
|--------------------------|---------------------------------|---------------------------------|---------------------------------|
| **Quyền truy cập** | Có thể truy cập từ bất kỳ đâu | Chỉ có thể truy cập từ trong lớp| Có thể truy cập từ lớp và lớp dẫn xuất |
| **Tính kế thừa** | Giữ nguyên quyền truy cập | Không thể truy cập từ lớp dẫn xuất | Trở thành protected trong lớp dẫn xuất |
| **Mục đích sử dụng** | Cho phép tương tác công khai | Bảo vệ dữ liệu nhạy cảm | Chia sẻ với các lớp con