之前没搞明白这个问题,现在明白了做一个记录
class Outer{
int x = 2;
class Inner{
//这里show方法为何不能是静态的
public void show(){
System.out.println("inner:"+x);
}
}
}
这里有几个问题就是
1.要使用某个类的static属性或者方法,那么这个类必须要加载到jvm中。
2.static类型的属性和方法,在类加载的时候就会存在于内存中。
3.非static的内部类,在外部类加载的时候,并不会加载它,所以它里面不能有静态变量或者静态方法。
结论:
如果一个非static的内部类如果具有static的属性或者方法,那么就会出现一种情况:内部类未加载,但是却试图在内存中创建static的属性和方法,这当然是错误的。原因:类还不存在,但却希望操作它的属性和方法。