Наследование Java статической переменной - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть статическая переменная в моем классе Base123

class Base123 {
    public static int statvar;
}

, и у меня есть производный класс Inheritance111, который расширяет Base123

public class Inheritance111 extends Base123 {

    public static void main(String[] args) {
        System.out.println(Inheritance111.statvar);
        System.out.println(Base123.statvar);
        Base123.statvar=10;
        System.out.println(Inheritance111.statvar);
        System.out.println(Base123.statvar);
        System.out.println(statvar);
        Inheritance111.statvar=20;
        System.out.println(Inheritance111.statvar);
        System.out.println(Base123.statvar);
        System.out.println(statvar);
    }
}

Я получил выводдля приведенного выше кода:

0 0 10 10 10 20 20 20

Для одного класса статическая переменная является общей для всех объектов этого класса.Но когда класс расширяется, наследуемая переменная в подклассе также является той же самой переменной?Поскольку изменения, сделанные с использованием

Inheritance111.statvar=20;

, изменяют значение Base123.statvar.

1 Ответ

0 голосов
/ 26 ноября 2018

Да, это относится к той же переменной, что и суперкласс, даже если вы вызываете переменную из подкласса, например Inheritance111.statvar=20;.
. Вы можете ссылаться на этот JavaDoc статические поля

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...