Access specifiers (các từ khóa truy cập) là một phần quan trọng trong lập trình C++ hướng đối tượng. Chúng xác định cách các thành phần của một lớp (thuộc tính và phương thức) có thể được truy cập từ bên ngoài lớp. Có ba access specifiers chính trong C++:
- Public: Các thành phần được khai báo với access specifier
public
có thể được truy cập từ bên ngoài lớp thông qua các đối tượng của lớp. - Private: Các thành phần được khai báo với access specifier
private
chỉ có thể được truy cập từ bên trong lớp. Các thành phầnprivate
không thể được truy cập trực tiếp từ bên ngoài lớp. - Protected: Các thành phần được khai báo với access specifier
protected
có sự kết hợp củapublic
vàprivate
. Chúng có thể được truy cập từ bên trong lớp và từ các lớp dẫn xuất (subclass).
Dưới đây là một ví dụ về cách sử dụng access specifiers trong C++:
cpp
#include <iostream>
class Person {
public:
std::string name; // Các thành phần public
void displayName() {
std::cout << "Tên: " << name << std::endl;
}
private:
int age; // Các thành phần private
protected:
double salary; // Các thành phần protected
};
class Employee : public Person {
public:
void setSalary(double s) {
salary = s; // Có thể truy cập từ lớp con
}
void displaySalary() {
std::cout << "Lương: " << salary << std::endl;
}
};
int main() {
Person person;
person.name = "John"; // Có thể truy cập từ bên ngoài
Employee employee;
employee.setSalary(5000.0);
employee.name = "Alice"; // Có thể truy cập từ lớp con
person.displayName();
employee.displaySalary();
return 0;
}
Trong ví dụ trên, chúng ta có một lớp Person
với các thành phần public
, private
và protected
. Lớp Employee
là lớp dẫn xuất từ Person
, do đó, nó có thể truy cập các thành phần protected
của lớp cha. Trong hàm main
, chúng ta tạo một đối tượng person
từ lớp Person
và một đối tượng employee
từ lớp Employee
, và truy cập các thành phần phù hợp thông qua các phương thức.