Можно ли изменить защищенные переменные из унаследованного класса в Java? - PullRequest
0 голосов
/ 30 марта 2011

Пример:

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?      
    }
}

Ответы [ 3 ]

3 голосов
/ 30 марта 2011

Да, это то, что protected для:)

2 голосов
/ 30 марта 2011

Защищенный доступ означает, что член (или метод) виден из одного и того же пакета и в иерархии классов.Так что да, ваш код имеет ожидаемый результат.

0 голосов
/ 20 июня 2013

Не рекомендуется использовать защищенные переменные с наследованием.

Правильный способ сделать это (не нарушая инкапсуляцию) - это использовать частные средства доступа для переменных и общедоступные (или защищенные) методы получения и установки.

...