JVM的类加载规则 :
1. static类型的属性和方法,在类加载的时候就会存在于内存中。
2. 要想使用某个类的static属性和方法,那么这个类必须要加载到JAVA虚拟机中。
3. 非静态内部类并不随外部类一起加载,只有在实例化外部类之后才会加载。
现在考虑这个情况:在外部类并没有实例化,内部类还没有加载,这时候如果
调用内部类的静态成员或方法,内部类还没有加载,却试图在内存中创建该内
部类的静态成员,这明显是矛盾的。所以非静态内部类不能有静态成员变量或
静态方法。
假设 :在外部类并没有实例化,内部类还没有加载,这时候如果JVM加载静
态成员或方法,内部类还没有加载,因为非静态内部类的加载依赖于实化,
而此时却试图在内存中创建该内部类的静态成员,这明显是矛盾的。所以非
静态内部类不能有静态成员变量或静态方法。
Java内部类 :非静态内部类为什么不能定义静态成员变量和静态方法
最新推荐文章于 2021-12-03 18:03:16 发布