Пример:
class A { protected Integer x; class A () { x = new Integer(0); } public setX(Integer m) { x = m; } } class B extends A { public class B () { super(); } public static void main () { B b = new B(); b.setX(69); System.out.println("Value of x is: " + b.x); // expect to be 69. Is it correct? } }
Да, это то, что protected для:)
protected
Защищенный доступ означает, что член (или метод) виден из одного и того же пакета и в иерархии классов.Так что да, ваш код имеет ожидаемый результат.
Не рекомендуется использовать защищенные переменные с наследованием.
Правильный способ сделать это (не нарушая инкапсуляцию) - это использовать частные средства доступа для переменных и общедоступные (или защищенные) методы получения и установки.