Различия между public и private в C++

Try Proseoai — it's free
AI SEO Assistant
SEO Link Building
SEO Writing

Различия между public и private в C++

Содержание

  1. Введение
  2. Различия между спецификаторами доступа public и private
  3. Пример использования спецификатора доступа public
  4. Пример использования спецификатора доступа private
  5. Пример использования геттеров и сеттеров
  6. Концепция инкапсуляции и использование геттеров и сеттеров
  7. Пример приватного метода
  8. Пример публичного метода, вызывающего приватный метод
  9. Заключение
  10. Ресурсы

Различия между спецификаторами доступа public и private

🔹 Введение

В объектно-ориентированных языках программирования, таких как C++, существуют спецификаторы доступа, которые позволяют управлять использованием и доступом к членам класса. Два наиболее распространенных спецификатора доступа - public и private. В этой статье мы рассмотрим их различия и примеры их использования.

🔹 Различия между спецификаторами доступа public и private

Спецификатор доступа public позволяет использовать и получать доступ к членам класса как внутри самого класса, так и за его пределами. Это означает, что публичные члены класса могут быть использованы и изменены где угодно в программе. Например, мы можем создать объект класса Employee и использовать его публичные члены, такие как имя сотрудника.

С другой стороны, спецификатор доступа private запрещает доступ к членам класса за его пределами. Приватные члены класса доступны только внутри самого класса. Это означает, что приватные члены класса не могут быть использованы и изменены вне класса. Например, приватные переменные класса Employee, такие как зарплата, не могут быть получены или изменены вне класса.

🔹 Пример использования спецификатора доступа public

Допустим, у нас есть класс Employee, который представляет сотрудников. Мы можем задать публичный член класса, такой как имя сотрудника, с использованием спецификатора доступа public:

class Employee {
public:
    std::string name;
};

Теперь мы можем создать объект класса Employee и использовать его публичные члены, например, установить имя сотрудника и вывести его:

Employee employee1;
employee1.name = "Kevin";
std::cout << employee1.name << std::endl;

Вывод:

Kevin

В этом примере мы можем получить доступ к публичному члену класса (имени сотрудника) за его пределами.

🔹 Пример использования спецификатора доступа private

Теперь предположим, у нас есть приватный член класса Employee, такой как зарплата, который доступен только внутри класса:

class Employee {
private:
    double salary;
};

В этом случае мы не можем получить доступ к приватному члену класса за его пределами:

Employee employee1;
employee1.salary = 50000; // Ошибка: 'salary' является приватным членом класса Employee

Компилятор выдаст ошибку, сообщая нам, что мы не можем получить доступ к приватному члену класса, так как он является приватным.

🔹 Пример использования геттеров и сеттеров

Если мы хотим, чтобы приватный член класса был доступен для получения и установки извне класса, мы можем использовать геттеры и сеттеры. Геттеры позволяют получать значение приватного члена, а сеттеры - устанавливать его. Вот пример использования геттера и сеттера для переменной зарплаты:

class Employee {
private:
    double salary;

public:
    double getSalary() {
        return salary;
    }

    void setSalary(double potentialSalary) {
        // Проверка на валидность значения potentialSalary
        if (potentialSalary < 0) {
            salary = 0;
        } else {
            salary = potentialSalary;
        }
    }
};

Теперь мы можем использовать геттер и сеттер для получения и установки значения зарплаты:

Employee employee1;
employee1.setSalary(50000);
std::cout << employee1.getSalary() << std::endl;

Вывод:

50000

Таким образом, мы можем получить доступ к приватному члену класса (зарплате) с помощью соответствующих геттеров и сеттеров.

🔹 Концепция инкапсуляции и использование геттеров и сеттеров

Концепция инкапсуляции заключается в том, чтобы скрыть внутренние детали реализации класса и предоставить публичный интерфейс для работы с классом. Использование геттеров и сеттеров позволяет нам контролировать доступ к приватным членам класса и добавлять дополнительную логику при установке или получении значений.

Например, перед установкой значения зарплаты мы можем проверить, что значение положительное. Если значение отрицательное, мы устанавливаем зарплату на ноль. Это позволяет нам обеспечить правильность данных и связанную с ними логику.

🔹 Пример приватного метода

Кроме приватных переменных, у нас также могут быть приватные методы. Приватные методы могут быть использованы только внутри класса и не доступны за его пределами. Вот пример использования приватного метода для расчета бонуса, который сотрудник получает каждый год на основе его зарплаты:

class Employee {
private:
    double salary;

    double calculateBonus() {
        return salary * 0.10;
    }
};

В этом случае мы не можем получить доступ к приватному методу за пределами класса:

Employee employee1;
employee1.calculateBonus(); // Ошибка: 'calculateBonus' является приватным членом класса Employee

🔹 Пример публичного метода, вызывающего приватный метод

Мы можем создать публичный метод, который вызывает приватный метод изнутри класса. Это может быть полезно, если нам нужно использовать логику приватного метода, но сделать его доступным за пределами класса. Вот пример такого публичного метода:

class Employee {
private:
    double salary;

    double calculateBonus() {
        return salary * 0.10;
    }

public:
    void printBonus() {
        std::cout << "Бонус: " << calculateBonus() << std::endl;
    }
};

Теперь мы можем вызвать публичный метод, который в свою очередь вызовет приватный метод:

Employee employee1;
employee1.printBonus();

Вывод:

Бонус: 5000

Таким образом, мы можем получить доступ к приватному методу, вызвав публичный метод, который его использует.

🔹 Заключение

В данной статье мы рассмотрели различия между спецификаторами доступа public и private в языке программирования C++. Спецификатор доступа public позволяет использовать и получать доступ к членам класса как внутри самого класса, так и за его пределами, в то время как спецификатор доступа private ограничивает доступ к членам класса только внутри класса. Мы также рассмотрели примеры использования геттеров и сеттеров, а также приватных методов, которые улучшают контроль над доступом к классу и добавляют дополнительную логику к его членам.

🔹 Ресурсы

  • checoportfoliocourses.com - Веб-сайт, где вы можете найти полезные материалы и курсы по созданию портфолио для впечатления на работодателей.

Are you spending too much time on seo writing?

SEO Course
1M+
SEO Link Building
5M+
SEO Writing
800K+
WHY YOU SHOULD CHOOSE Proseoai

Proseoai has the world's largest selection of seo courses for you to learn. Each seo course has tons of seo writing for you to choose from, so you can choose Proseoai for your seo work!

Browse More Content