为什么静态内部类的实例方法也不能访问外部类的实例属性 ? 直接上代码奉上:
代码:
private int x = 3;
static class Inner//静态内部类
{
void function()
{
System.out.println("innner :"+x); //(aaa)处x编译报错,,
}
}
为什么(aaa)处 的x会报错呢???,,,
因为Inner也是外部类成员,静态Inner,不能直接访问非静态的变量x,,此时还没有对象,这个静态 Inner 要访问的是对象的x,你连对象都没有,,,因为实例变量是随着对象的建立而存在于堆内存中,,,也就是实例变量存在对象里面,,所以这个x就没在内存中存在过 ,,,因为先来后到,静态先在了,那个非静态x还没在,我当然不能访问你了。,, static int x这样写就对
|