我有一個類,Super
:規定Java中靜態變量繼承的規則是什麼?
public class Super {
public static String foo = "foo";
}
我也有另一個類,Sub
擴展Super
:
public class Sub extends Super {
static {
foo = "bar";
}
public static void main (String[] args) {
System.out.println(Super.foo);
}
}
當我運行它,它打印出bar
。
我的第三個(也是最後一次)類Testing
:
public class Testing {
public static void main (String[] args) {
System.out.println(Super.foo);
System.out.println(Sub.foo);
System.out.println(Super.foo);
}
}
此打印:
foo
foo
foo
爲什麼foo
內容取決於什麼類你訪問它,我不明白。誰能解釋一下?
我的意思是說,當我從'Testing'訪問它時,它返回的東西與我從'Sub'訪問它時不同。 – jmgrosen 2012-03-27 21:43:33
'@jmgrosen:'啊,現在和你在一起。 – 2012-03-27 21:46:00
FWIW,注意你上面的內容和'Sub'包含的內容之間的重要區別'public static String foo =「bar」;'(因此你得到「foo」,「bar」,「foo」as你可能期望)。 – 2012-03-27 21:48:44