Инкапсуляция С++
Инкапсуляция
Смысл инкапсуляции в том, чтобы убедиться, что «конфиденциальные» данные скрыты от пользователей. Для этого вы должны объявить переменные/атрибуты класса как private
(нельзя получить доступ извне класса). Если вы хотите, чтобы другие читали или изменяли значение частного члена, вы можете предоставить общедоступные методы get и
set .
Доступ к закрытым членам
Чтобы получить доступ к частному атрибуту, используйте общедоступные методы «get» и «set»:
Пример
#include <iostream>
using namespace std;
class Employee {
private:
// Private attribute
int salary;
public:
// Setter
void setSalary(int s) {
salary = s;
}
// Getter
int getSalary() {
return salary;
}
};
int
main() {
Employee myObj;
myObj.setSalary(50000);
cout << myObj.getSalary();
return 0;
}
Объяснение примера
Атрибут salary
, private
которые имеют ограниченный доступ.
Публичный setSalary()
метод принимает параметр ( s
) и присваивает его
salary
атрибуту (salary = s).
Публичный getSalary()
метод возвращает значение частного salary
атрибута.
Внутри main()
мы создаем объект Employee
класса. Теперь мы можем использовать этот
setSalary()
метод, чтобы установить значение частного атрибута в 50000
. Затем мы вызываем
getSalary()
метод объекта, чтобы вернуть значение.
Почему инкапсуляция?
- Хорошей практикой считается объявлять атрибуты вашего класса закрытыми (как можно чаще). Инкапсуляция обеспечивает лучший контроль над вашими данными, потому что вы (или другие) можете изменить одну часть кода, не затрагивая другие части.
- Повышенная безопасность данных