Что такое модификатор доступа private в ООП?

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

Ответ

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

Основные правила:

  • Доступ извне класса (например, из глобальной области видимости или другого объекта) — невозможен.
  • Доступ из дочерних классов (наследников) — также невозможен.
  • Взаимодействие с private-членами возможно только через public или protected методы того же класса (геттеры, сеттеры, внутренние методы).

Пример в PHP:

class BankAccount {
    private float $balance = 0.0;

    // Public метод для безопасного изменения private свойства
    public function deposit(float $amount): void {
        if ($amount > 0) {
            $this->balance += $amount;
        }
    }

    // Private метод для внутренней логики
    private function logTransaction(string $type): void {
        // Логирование операции, недоступное извне
        file_put_contents('log.txt', "$type: " . date('Y-m-d H:i:s') . "n", FILE_APPEND);
    }

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

$account = new BankAccount();
$account->deposit(100.0); // OK
// $account->balance = 1000; // Fatal error: Cannot access private property
// $account->logTransaction('deposit'); // Fatal error: Call to private method

Почему это важно:

  1. Инкапсуляция: Скрывает внутреннее состояние объекта, предотвращая его прямое и потенциально некорректное изменение.
  2. Безопасность: Защищает критически важные данные (например, пароли, баланс).
  3. Гибкость поддержки: Позволяет изменять внутреннюю реализацию класса, не ломая код, который его использует, так как внешний интерфейс (public методы) остаётся неизменным.