如果内部类修饰为静态,也就是说静态内部类。类中就可以静态方法或成员。
如果内部类没有修饰为静态,类中就不能有静态方法或成员。
要说原因的话,就是静态属性在类运行时就存放在内存中。
而非静态的需要创建实例对象才会存放在内存中。
我们在调用内部类的方法时。如果都是静态就直接类名调用:Outer.Inner.method();
如果非静态则创建实例调用:new Outer.Inner().method();
这是如果Inner为非静态而method为静态的话就会出现矛盾。
因为Inner需要创建Outer实例才存在内存中,
而method却在类运行时就在内存中。
所以非静态内部类中不可以有静态属性。
以上是我的理解。
|