Что такое состояние объекта в ООП?

«Что такое состояние объекта в ООП?» — вопрос из категории ООП, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Состояние объекта — это совокупность значений всех его полей (атрибутов) в конкретный момент времени. Состояние определяет, как объект будет реагировать на вызовы методов, и может изменяться в течение его жизни.

Ключевые аспекты:

  • Инкапсуляция. Состояние обычно скрыто (private) и доступно для изменения только через публичные методы (геттеры/сеттеры), что обеспечивает контроль над его целостностью.
  • Идентичность vs состояние. Два разных объекта могут иметь одинаковое состояние, но при этом оставаться разными сущностями.
  • Зависимость поведения. Методы объекта часто используют его внутреннее состояние для вычисления результата.

Пример на Java:

public class BankAccount {
    // Поля, определяющие состояние объекта
    private String accountNumber; // Идентичность (обычно неизменна)
    private double balance;       // Изменяемое состояние
    private boolean isActive;     // Изменяемое состояние

    public BankAccount(String number, double initialBalance) {
        this.accountNumber = number;
        this.balance = initialBalance;
        this.isActive = true;
    }

    // Метод изменяет состояние
    public void deposit(double amount) {
        if (isActive && amount > 0) {
            this.balance += amount; // Изменение состояния
        }
    }

    // Метод читает состояние
    public double getBalance() {
        return balance;
    }
}
// Использование
BankAccount acc = new BankAccount("12345", 100.0); // Состояние: balance=100.0, isActive=true
acc.deposit(50.0); // Состояние изменено: balance=150.0