【发布时间】:2011-01-10 18:54:11
【问题描述】:
我读过 Java 中的静态不是继承的。我有一个小程序,它在运行时编译并生成2 2 作为输出。从程序来看,k(一个静态变量)似乎被继承了!!我做错了什么?
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();
}
}
【问题讨论】:
-
没听说过,你的假设可能是错误的。
-
如果您阅读了上面的 cmets,发帖人将“继承”理解为“继承并具有通过多态运行时调度覆盖的能力”,这有点不合常规且容易混淆。
-
@Pete:我明白了,所以我得出结论,父类的静态变量是由子类继承的?
-
@gameover: 静态变量不是继承的,它们是可用的。
标签: java