在Java中,如何从父方法访问子实例的私有静态属性?

non*_*zor 5 java static attributes extends

这是一个例子:

class Parent {
    protected int A;

    public void displayA() {
        System.out.println(A);
    }
}

class Child extends Parent {
    protected static int A=2;
}

Child intance = new Child();
intance.displayA();

=> return null !!!
Run Code Online (Sandbox Code Playgroud)

从父方法检索子属性的方法是什么?

谢谢 :)

Ell*_*ill 2

在您的实例中,如果您使用 Child 类构造函数来设置 A 的值而不是重新声明变量,那么父类应该能够获取该值。

上面实例的问题是您在子类中重新声明变量,而不是仅仅更改超类中变量的值。

将子变量声明为静态是否有原因?如果您只需要该类变量的值,则可以直接引用它。然而,让多个子类设置变量值并由超类使用的更简洁的方法是让子类设置所需的值,然后让超类引用该变量(可能使用 getter)子类已经设置了值。

  • @nonozor:这太疯狂了。您不能让一个静态字段尝试覆盖非静态字段。把它从你的脑海中抹去吧。考虑购买一本像样的 Java 教科书并阅读开始的章节,因为这将对您有很大帮助。顺便说一句,埃利奥特的好建议是 1+。 (3认同)