Проверяет понимание инкапсуляции и разницы между модификаторами доступа private и protected в объектно-ориентированном программировании.
Модификаторы доступа определяют, кто может обращаться к полям и методам класса. Они нужны, чтобы скрывать внутреннюю реализацию и защищать данные от случайного изменения извне. Два ключевых модификатора — private и protected — отличаются областью видимости.
Пример на Java:
class Animal {
private String secret = "только внутри Animal";
protected String name = "Барсик";
private void privateMethod() { System.out.println(secret); }
protected void protectedMethod() { System.out.println(name); }
}
class Cat extends Animal {
void test() {
// System.out.println(secret); // ошибка: private недоступен
System.out.println(name); // ок: protected доступен
protectedMethod(); // ок
}
}Поля почти всегда делают private, а доступ к ним организуют через геттеры и сеттеры. Это защищает инварианты объекта. protected применяют, когда метод или поле должны быть доступны наследникам для расширения поведения, но не должны попадать в публичный API.
Важно помнить: protected — это не «почти public». Он всё ещё часть внутреннего контракта класса, и его изменение может сломать наследников. Поэтому использовать его стоит осознанно.
Итог: private применяйте для полного сокрытия деталей реализации, protected — когда наследникам нужен доступ к общим частям базового класса.