我讀過Java中的Statics不會被繼承。我有一個小程序,在運行時編譯並生成2 2
作爲輸出。從程序看來,k(一個靜態變量)正在被繼承!我究竟做錯了什麼?Java中的靜態成員
class Super
{
int i =1;
static int k = 2;
public static void print()
{
System.out.println(k);
}
}
class Sub extends Super
{
public void show()
{
// I was expecting compile error here. But it works !!
System.out.println(" k : " + k);
}
public static void main(String []args)
{
Sub m =new Sub();
m.show();
print();
}
}
從來沒有聽說過,你的假設可能是錯誤的。 – 2010-01-29 09:42:00
我在這裏閱讀:http://stackoverflow.com/questions/1740528/inheritance-vs-static-in-java – gameover 2010-01-29 09:43:24
如果你閱讀了關於這個的評論,那麼這張海報正在將'繼承'表示爲'繼承的能力用多態運行時調度來覆蓋「,這有點不合常規,容易混淆。 – 2010-01-29 09:49:15