Что такое инкапсуляция?

Ответ

Инкапсуляция - не просто сокрытие данных (это лишь один аспект). Это объединение данных и методов работы с ними в единый блок с контролируемым доступом:

class BankAccount {
    private float $balance = 0;

    public function deposit(float $amount): void {
        if ($amount <= 0) throw new InvalidArgumentException();
        $this->balance += $amount;
    }

    public function withdraw(float $amount): void {
        if ($amount > $this->balance) throw new InsufficientFundsException();
        $this->balance -= $amount;
    }

    public function getBalance(): float {
        return $this->balance;
    }
}

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

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.