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”。有没有办法让它打印“儿子”?
是。但是就变量而言,它会被覆盖(将新值赋予变量。将新定义赋予函数是Override)。Just don't declare the variable but initialize (change) in the constructor or static block.
Just don't declare the variable but initialize (change) in the constructor or static block.
在父类的块中使用时,该值将得到反映
如果变量是静态的,则在初始化时使用静态块更改其值,
class Son extends Dad { static { me = 'son'; } }
否则更改构造函数。
你还可以稍后在任何块中更改该值。它将反映在超一流