Java和继承的静态成员

标签 java inheritance static

<分区>

假设我有以下类(class):

class Parent
{
    private int ID;
    private static int curID = 0;

    Parent()
    {
         ID = curID;
         curID++;
    }
}

还有这两个子类:

class Sub1 extends Parent
{
    //...
}

class Sub2 extends Parent
{
    //...
}

我的问题是这两个子类共享同一个静态 curID 成员 父类,而不是有不同的父类。

如果我这样做:

{
    Sub1 r1 = new Sub1(), r2 = new Sub1(), r3 = new Sub1();
    Sub2 t1 = new Sub2(), t2 = new Sub2(), t3 = new Sub2();
}

r1、r2、r3 的 ID 为 0、1、2,t1、t2、t3 的 ID 为 3、4、5。 而不是这些,我希望 t1、t2、t3 具有值 0、1、2,即使用 curID 静态变量的另一个副本。

这可能吗?如何?

最佳答案

虽然 static 字段/方法是继承的,但它们不能被覆盖,因为它们属于声明它们的类,而不是对象引用。如果您尝试覆盖其中之一,您要做的就是隐藏它。

关于Java和继承的静态成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17172033/

相关文章:

Ruby 继承和要求顺序

java - 静态 block 初始化

delphi - Delphi中的类字段(静态字段)

java - 注释节点 JaxB 编码

java - 无需使用 ALT 即可设置按钮助记键事件

java - 无法使用 GSON 库解决 java.lang.NoSuchMethodError

java - 不一致的类层次结构

java - Spring Data Rest 将自定义端点添加到特定存储库

没有嵌套初始化的golang字段继承

c# - static 和 const 变量之间的区别