Вопрос проверяет понимание механизмов инкапсуляции в ООП и умение применять модификаторы доступа для сокрытия внутреннего состояния объекта.
Инкапсуляция — это принцип ООП, при котором внутреннее состояние объекта скрыто от прямого доступа извне, а взаимодействие происходит через строго определённый публичный интерфейс. Это позволяет защитить данные от случайных или намеренных изменений и упрощает поддержку кода.
class BankAccount {
private balance: number = 0;
deposit(amount: number): void {
if (amount <= 0) throw new Error('Invalid amount');
this.balance += amount;
}
getBalance(): number {
return this.balance;
}
}
const acc = new BankAccount();
acc.deposit(100);
console.log(acc.getBalance()); // 100
// acc.balance = 999; // ошибка компиляцииЗдесь поле balance недоступно напрямую, а изменение возможно только через deposit, где выполняется валидация. Это классический пример инкапсуляции.
Инкапсуляция используется повсеместно: в моделях данных, сервисах, API-клиентах. Она позволяет менять внутреннюю реализацию (например, хранить данные в кэше вместо БД) без изменения внешнего кода, который вызывает публичные методы.
Итог: инкапсуляцию стоит применять всегда, когда нужно защитить состояние объекта и обеспечить стабильный публичный интерфейс, что снижает связанность кода и упрощает его сопровождение.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию