小编典典

有没有办法覆盖 Java 中的类变量?

all

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();
}

函数 doIt 将打印“dad”。有没有办法让它打印“儿子”?


阅读 135

收藏
2022-08-21

共1个答案

小编典典

是的。但就变量而言,它被覆盖(为变量赋予新值。为函数赋予新定义是覆盖)。只是不要声明变量,而是在构造函数或静态块中初始化(更改)。

在父类的块中使用时会反映该值

如果变量是静态的,则在初始化期间使用静态块更改值,

class Son extends Dad {
    static { 
       me = "son"; 
    }
}

否则在构造函数中发生变化。

您也可以稍后在任何块中更改该值。它将反映在超类中

2022-08-21