繁体   English   中英

如何在子类中公开受保护的静态字段?

[英]How can I make a protected static field public in sub class?

我有这个代码:

class A {
    protected static final String foo = "FOO";
}

class B extends A {
    public static final String foo;
}

我希望System.out.println(B.foo)打印FOO但它打印null

我知道我可以通过用以下方法替换B的字段声明来解决这个问题:

class B extends A {
    public static final String foo() { return foo; }
}

是否可以继承受保护的静态字段并将其公开?

类 B 用作模拟对象,并添加这些括号以便调用B.foo()而不是B.foo并不重要,但我只是对是否可以摆脱它们感兴趣,如果是的,如果有充分的理由不这样做。 或者,如果我的方法在其他方面完全错误。

我希望System.out.println(B.foo)打印FOO但它打印null

那是因为B.foo没有覆盖A.foo 相反,它A.foo - 换句话说, B.foo是一个新变量,与A.foo分开,恰好具有相同的名称。

变量不能被覆盖,静态方法不能被覆盖。

在子类中只能覆盖非静态方法。

是否可以继承受保护的静态字段并将其公开?

不。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM