моя контактная информация
Почтамезофия@protonmail.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Инкапсуляция — одна из трех основных особенностей объектно-ориентированного программирования (ООП) (инкапсуляция, наследование, полиморфизм). Речь идет об объединении данных (свойств) и методов (функций) для работы с этими данными в независимую единицу (класс), максимально скрывающую внутренние детали объекта и открывающую внешний мир только интерфейс. Целью этого является защита данных объекта, предотвращение прямого доступа внешнего кода к внутренним структурам данных объекта, уменьшение количества ошибок и упрощение сложности.
Использование класса : При определении класса установите элементы данных (свойства) как частные или защищенные, а методы работы с этими данными установите как общедоступные. Таким образом, внешний код не может напрямую получить доступ к закрытым членам класса, а может получить к ним доступ только косвенно через общедоступные методы.
модификатор доступа:
public
: Доступен с помощью любого внешнего кода.protected
: Доступен только в самом классе и производных классах (подклассах).private
: Доступен только внутри самого класса, а не производных классов.Конструктор и деструктор : инициализировать объект с помощью конструктора и очистить ресурсы, занятые объектом, с помощью деструктора. Они также являются частью инкапсуляции, поскольку контролируют жизненный цикл объекта.
Ниже приведен простой пример оболочки C++, показывающийRectangle
Реализация (прямоугольного) класса.
- #include <iostream>
-
- class Rectangle {
- private:
- double width; // 矩形的宽
- double height; // 矩形的高
-
- public:
- // 构造函数
- Rectangle(double w, double h) : width(w), height(h) {}
-
- // 设置宽度
- void setWidth(double w) {
- width = w;
- }
-
- // 获取宽度
- double getWidth() const {
- return width;
- }
-
- // 设置高度
- void setHeight(double h) {
- height = h;
- }
-
- // 获取高度
- double getHeight() const {
- return height;
- }
-
- // 计算面积
- double getArea() const {
- return width * height;
- }
- };
-
- int main() {
- Rectangle rect(5.0, 10.0);
- std::cout << "Rectangle area: " << rect.getArea() << std::endl;
- rect.setWidth(7.0);
- std::cout << "New Rectangle area: " << rect.getArea() << std::endl;
- return 0;
- }
В этом примереRectangle
общийwidth
иheight
Свойства становятся частными, и внешний код не может получить к ним прямой доступ.Вместо этого мы используем общедоступные методы, такие какsetWidth
、getHeight
иgetArea
) для доступа и изменения этих частных свойств. Этот метод реализует инкапсуляцию данных и предоставляет понятный интерфейс для внешнего использования.