Публичные и приватные модификаторы доступа | Уроки по C++
Содержание
- Публичный доступ в C++
- Приватный доступ в C++
- Пример использования публичного доступа
- Пример использования приватного доступа
- Функции-геттеры и функции-сеттеры
- Пример использования функций-геттеров и функций-сеттеров
- Инкапсуляция в объектно-ориентированном программировании
- Пример использования инкапсуляции
- Применение приватных функций
- Пример использования приватных функций
- Заключение
👉 Публичный доступ в C++
Публичный доступ в языке программирования C++ позволяет использовать и получать доступ к элементам класса извне класса. При использовании публичного доступа, переменные класса и функции-члены могут быть использованы не только внутри класса, но и в других частях программы. Для объявления публичного доступа используется ключевое слово public
.
👉 Приватный доступ в C++
Приватный доступ в языке программирования C++ ограничивает использование и доступ к элементам класса только внутри самого класса. Переменные класса и функции-члены с приватным доступом не могут быть использованы в других частях программы, включая функции вне класса и другие классы. Для объявления приватного доступа используется ключевое слово private
.
👉 Пример использования публичного доступа
Давайте рассмотрим пример использования публичного доступа в языке программирования C++. Представим класс Employee
, который представляет сотрудников компании. Внутри класса у нас есть публичное поле name
, которое представляет имя сотрудника.
class Employee {
public:
string name;
};
В основной функции мы можем создать объект класса Employee
и получить доступ к полю name
, так как оно имеет публичный доступ:
Employee employee1;
employee1.name = "Kevin";
cout << employee1.name << endl; // Выведет "Kevin"
👉 Пример использования приватного доступа
Теперь рассмотрим пример использования приватного доступа в языке программирования C++. Внутри класса Employee
у нас есть приватное поле salary
, которое представляет зарплату сотрудника.
class Employee {
private:
double salary;
};
Попытка получить доступ к приватному полю salary
извне класса вызовет ошибку компиляции:
Employee employee1;
employee1.salary = 50000; // Ошибка компиляции
👉 Функции-геттеры и функции-сеттеры
Для получения и изменения приватных полей класса вы можете использовать функции-геттеры и функции-сеттеры. Функции-геттеры возвращают значение приватного поля, а функции-сеттеры устанавливают значение приватного поля.
class Employee {
private:
double salary;
public:
double getSalary() {
return salary;
}
void setSalary(double potentialSalary) {
if (potentialSalary < 0) {
salary = 0;
} else {
salary = potentialSalary;
}
}
};
👉 Пример использования функций-геттеров и функций-сеттеров
Теперь рассмотрим пример использования функций-геттеров и функций-сеттеров в языке программирования C++. Для класса Employee
мы добавим функции-геттер getSalary()
и функцию-сеттер setSalary()
для поля salary
.
class Employee {
private:
double salary;
public:
double getSalary() {
return salary;
}
void setSalary(double potentialSalary) {
if (potentialSalary < 0) {
salary = 0;
} else {
salary = potentialSalary;
}
}
};
Employee employee1;
employee1.setSalary(50000);
cout << "Salary: " << employee1.getSalary() << endl; // Выведет "Salary: 50000"
👉 Инкапсуляция в объектно-ориентированном программировании
Инкапсуляция - это концепция объектно-ориентированного программирования, которая позволяет скрыть детали реализации класса и предоставить доступ только к нужным методам и полям. Она позволяет упростить использование класса и защитить данные от неправильного использования.
👉 Пример использования инкапсуляции
В предыдущих примерах мы использовали инкапсуляцию для скрытия приватных полей класса и предоставления доступа к ним через функции-геттеры и функции-сеттеры.
class Employee {
private:
double salary;
public:
double getSalary() {
return salary;
}
void setSalary(double potentialSalary) {
if (potentialSalary < 0) {
salary = 0;
} else {
salary = potentialSalary;
}
}
};
👉 Применение приватных функций
Кроме приватных полей класса, мы также можем использовать приватные функции для скрытия деталей реализации. В примере ниже у нас есть приватная функция calculateBonus()
, которая вычисляет бонус сотрудника на основе его зарплаты.
class Employee {
private:
double salary;
private:
double calculateBonus() {
return salary * 0.1;
}
public:
void printBonus() {
cout << "Bonus: " << calculateBonus() << endl;
}
};
Попытка вызвать приватную функцию calculateBonus()
извне класса вызовет ошибку компиляции. Однако публичная функция printBonus()
может вызывать приватную функцию calculateBonus()
, так как они являются членами одного класса.
Employee employee1;
employee1.printBonus(); // Выведет "Bonus: 5000"
👉 Заключение
В этом видео мы рассмотрели разницу между публичным и приватным доступом в языке программирования C++. Публичный доступ позволяет использовать и получать доступ к элементам класса извне класса, тогда как приватный доступ ограничивает использование элементов только внутри класса. Мы также рассмотрели примеры использования публичного и приватного доступа, а также роль функций-геттеров и функций-сеттеров в инкапсуляции.