本帖最后由 惜别的海岸 于 2013-5-18 12:16 编辑
视频教程中说,静态成员不能引用非静态成员的原因是没有创建对象,所有成员变量也没有分配内存,所以静态成员引用不到。在下面这个程序中,主函数中已经创建了一个p对象,那么p对象的成员变量name已经在内存中存在,那么接下来调用静态函数时,静态函数应该可以访问到非静态成员name。但是程序报错了。说无法引用非静态变量name。谁能解释一下吗?
class Person
{
String name;//成员变量,实例变量。
static String country = "CN";//静态的成员变量,类变量。
public static void show()
{
System.out.println(name);//这行发生错误,说无法引用非静态变量name。
}
public void haha()
{}
}
class StaticDemo
{
public static void main(String[] args)
{
Person p = new Person();
Person.show();
}
}
|