在 Java 中,类变量不能被重写。相反,看似被覆盖的变量实际上是隐藏变量。为了阐明这个概念,我们看一个例子:
class Dad { protected static String me = "dad"; public void printMe() { System.out.println(me); } } class Son extends Dad { protected static String me = "son"; } public void doIt() { new Son().printMe(); // Prints "dad" }
这里,函数 doIt 打印“dad”,因为 Son 中的类变量 me 只是隐藏了从爸爸那里继承的 me。
覆盖和隐藏之间的主要区别在于,覆盖用子方法实现替换父方法实现,而隐藏只是使子成员无法访问父成员class.
因此,没有正确的方法来覆盖类变量。相反,要在给定示例中打印“son”,需要修改构造函数或将 name 参数传递给方法,如下所示:
public class Son extends Dad { private String me; public Son(String me) { this.me = me; } @Override public void printMe() { System.out.println(me); } }
以上是Java 中的类变量可以被重写吗?的详细内容。更多信息请关注PHP中文网其他相关文章!