【问题标题】:Java Constants inheritance [duplicate]Java常量继承[重复]
【发布时间】:2020-08-14 20:21:11
【问题描述】:

我发现我可以做到:

public class Message {

    public static final int MIN_BYTES = 5;
}

...并将此类设置为另一个类的父类,并将相同的常量设置为另一个值,例如:

public class Ack extends Message {

    public static final int MIN_BYTES = 1;
}

由于编译器没有抱怨,这让我想到了上面的问题:

  1. 这些变量真的一样吗?
  2. 我会说它是最具体的,所以在这种情况下来自 Ack 类。这是真的吗?
  3. 常量的值不能改变(它是最终的),所以如果问题 1 为真,那怎么可能?

谢谢!

【问题讨论】:

  • 这是两个独立的静态字段,单独存在。您不能覆盖静态成员。

标签: java


【解决方案1】:
  1. 没有。 Ack.MIN_BYTESMessage.MIN_BYTES 彼此没有任何关系。
  2. 不清楚您在问什么 -- 什么 最具体? a.MIN_VALUE 取决于astatic 类型——如果你写Message a = new Ack(),那么a.MIN_VALUE 会给你Message.MIN_BYTES = 5。如果你写Ack a = new Ack(),那么a.MIN_VALUE会给你Ack.MIN_BYTES = 1
  3. 不适用。

【讨论】:

    【解决方案2】:

    第二个不会覆盖第一个。它只是将它隐藏在Ack 中。 ALL 声明为public static final 的类成员可以使用[fullpackagename].[classname].[variablename] 访问

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-20
      • 1970-01-01
      • 2017-12-01
      • 1970-01-01
      • 2012-04-11
      • 2014-08-06
      相关资源
      最近更新 更多