Некоторые контексты: У меня есть два разных класса (Client и ClientAuth), которые расширяют один и тот же абстрактный класс NetworkingAbstract (я буду называть его NA). Этот последний класс имеет три различные защищенные статические переменные класса со следующими типами: Socket, InputStream и OutputStream.Java Inheritance, Два подкласса одного класса
Я создаю новый объект ClientAuth внутри класса Client. Объект ClientAuth вызывает метод, который инициализирует переменные класса NetworkingAbstract, InputStream и OutputStream. Затем, когда метод возвращается, когда я обращаюсь к этим переменным (внутри класса Client), они имеют те же значения, которые были приписаны им внутри объекта ClientAuth!
Это действительно соответствует моим потребностям, но я не понимаю, почему это происходит!
Не должны ли эти переменные класса (OutputStream и InputStream) быть независимыми между Client и ClientAuth, несмотря на то, что оба они расширяют один и тот же класс? Или это потому, что они оба расширяют один и тот же класс, они разделяют ценности?
Я надеюсь, что я сделал мой вопрос достаточно ясно ..
всегда есть только один экземпляр статической переменной. это определение статики. – nhouser9
Статические переменные распределяются между всеми экземплярами класса и его подклассов. В основном нет наследования или переопределения статических переменных, они не похожи на «переменные класса», с которыми вы можете использовать другие языки. – pvg
Пожалуйста, не описывайте свои классы, покажите, что код сокращен до минимума, необходимого для передачи вашего вопроса (см. [Mcve]). –