【发布时间】:2017-02-17 18:21:33
【问题描述】:
一些上下文: 我有两个不同的类(Client 和 ClientAuth),它们都扩展了同一个抽象类 NetworkingAbstract(我称之为 NA)。最后一个类具有三个不同的受保护静态类变量,它们具有以下类型:Socket、InputStream 和 OutputStream。
我在 Client 类中创建了一个新的 ClientAuth 对象。 ClientAuth 对象调用一个方法 初始化 NetworkingAbstract 类变量 InputStream 和 OutputStream。然后,当方法返回时,当我访问这些变量(在 Client 类中)时,它们具有在 ClientAuth 对象中归属于它们的相同值!
这实际上符合我的需要,但我不明白为什么会这样!
这些类变量(OutputStream 和 InputStream)是否应该在 Client 和 ClientAuth 之间独立,尽管它们都扩展了同一个类?还是因为它们都扩展了同一个类,所以它们共享值??
我希望我的问题足够清楚..
【问题讨论】:
-
静态变量总是只有一个实例。这就是静态的定义。
-
静态变量在类的所有实例及其子类之间共享。静态变量基本上没有继承或覆盖,它们不像您可能习惯于其他语言的“类变量”。
-
请不要描述您的课程,显示代码已缩减到传达您的问题所需的最低限度(请参阅minimal reproducible example)
-
听起来您需要解释将变量创建为静态变量的原因。
-
我不知道你为什么被否决;这些答案是否解决了您的问题?
标签: java inheritance subclass