class Father
{
static int i=1;
}
public class Test extends Father
{
public static void main(String[] args)
{
i=2;
System.out.println(i);
}
}上面这个一切正常;
class Father
{
static int i=1;
}
class Son extends Father
{
i=2; //错误提示 需要<标识符>
}
public class Test extends Son
{
public static void main(String[] args)
{
i=3;
System.out.println(i);
}
}这两个段代码有区别吗?
下面的是son类的成员当然要加类型了。
{
i=2; //错误提示 需要<标识符>
}
这个类中的i,其所在位置(没有在方法内),决定它是作为Son类的类成员变量对待的,
所以,编译器并不认为它是引用了父类的静态变量,而是认为你需要声明一个新变量。正确的用法:
class Son extends Father
{
static{i=2;} //错误提示 需要<标识符>
}而:
public class Test extends Father
{
public static void main(String[] args)
{
i=2;
System.out.println(i);
}
}对i的引用处于一个方法中,所以可以引用类的静态变量。