Java Protected: Ограничения доступа в языке программирования
Ключевое слово "protected" в Java используется для задания уровня доступа к полям и методам класса. К полям или методам, помеченным как "protected", можно получить доступ из кода, который находится в пределах того же пакета, где находится класс, или из любого подкласса, независимо от того, в каком пакете он находится.
Преимущество использования "protected" заключается в том, что оно обеспечивает сильную инкапсуляцию класса, одновременно позволяя его наследникам получать доступ к его частным методам и полям.
Рассмотрим следующий пример:
public class Animal {
protected String name;
protected void speak() {
System.out.println("Animal speaks");
}
}
public class Cat extends Animal {
public void setName(String name) {
this.name = name;
}
}
public class Main {
public static void main(String[] args) {
Cat cat = new Cat();
cat.setName("Fluffy");
cat.speak(); // вызов protected метода из подкласса
System.out.println("Cat name is " + cat.name); // чтение protected поля из подкласса
}
}
В примере определен класс Animal, который содержит защищенное поле "name" и метод "speak". Затем определен класс Cat, который наследует класс Animal и получает доступ к его полям и методам, которые помечены как protected. В методе main создается объект Cat и вызывается его метод setName, который устанавливает значение защищенного поля "name". Затем вызывается метод "speak" из класса Animal, который также помечен как "protected".
Использование "protected" в таком примере позволяет избежать нежелательного доступа к защищенным полям и методам класса Animal напрямую из других классов, но при этом подклассы могут получить доступ к этим частным данным для реализации своих собственных методов и функциональности.