【问题标题】:Java Inheritance, Two subclasses of the same classJava继承,同一个类的两个子类
【发布时间】: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


【解决方案1】:

最后一个类具有三个不同的受保护静态类变量,它们具有以下类型:Socket、InputStream 和 OutputStream。

静态变量是与一个类相关联的变量,而不是该类的单个对象。

如果您希望它们对每个对象都是唯一的,则无需使用静态变量。

【讨论】:

    【解决方案2】:

    类的静态属性在其所有实例之间共享。 因此,属性都称为类的属性。

    阅读此java-static-methods-variables-static

    【讨论】:

      猜你喜欢
      • 2011-06-03
      • 2011-10-01
      • 2012-11-28
      • 1970-01-01
      • 2023-04-02
      • 2021-09-12
      • 1970-01-01
      • 2013-06-05
      • 2022-11-29
      相关资源
      最近更新 更多