Назад к вопросам
Junior
99
questionbank

Что такое инкапсуляция в объектно-ориентированном программировании (ООП)?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Инкапсуляция — это механизм, объединяющий данные и методы (функции), работающие с этими данными, в единый объект. При этом реализация внутренних деталей объекта скрывается от внешнего мира, предоставляя доступ к данным только через определенный интерфейс (публичные методы).

Основные цели:

  • Сокрытие данных: Предотвращает прямой доступ к внутренним состояниям объекта, защищая их от некорректного изменения.
  • Контроль доступа: Позволяет определить, какие части объекта доступны извне.
  • Управляемость: Упрощает изменение внутренней реализации без влияния на код, использующий этот объект.
  • Безопасность: Обеспечивает целостность данных.

Пример на Java:

class BankAccount {
    private double balance; // Данные скрыты

    public BankAccount(double initialBalance) {
        if (initialBalance >= 0) {
            this.balance = initialBalance;
        } else {
            this.balance = 0;
        }
    }

    public double getBalance() { // Публичный метод для доступа
        return balance;
    }

    public void deposit(double amount) { // Публичный метод для изменения
        if (amount > 0) {
            balance += amount;
        }
    }

    public void withdraw(double amount) { // Публичный метод для изменения
        if (amount > 0 && balance >= amount) {
            balance -= amount;
        }
    }
}

// Пример использования
// BankAccount account = new BankAccount(1000);
// double currentBalance = account.getBalance(); // Доступ через метод
// account.deposit(500); // Изменение через метод
// account.balance = -100; // Невозможно напрямую изменить balance