一尘不染

有没有一种方法可以覆盖Java中的类变量?

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

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


阅读 275

收藏
2020-03-01

共1个答案

一尘不染

是。但是就变量而言,它会被覆盖(将新值赋予变量。将新定义赋予函数是Override)。Just don't declare the variable but initialize (change) in the constructor or static block.

在父类的块中使用时,该值将得到反映

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

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

否则更改构造函数。

你还可以稍后在任何块中更改该值。它将反映在超一流

2020-03-01