黑马程序员技术交流社区

标题: 非静态内部类为什么不能定义静态变量 [打印本页]

作者: 孙建志    时间: 2015-11-8 22:32
标题: 非静态内部类为什么不能定义静态变量
本帖最后由 孙建志 于 2015-11-8 22:39 编辑

class Outer {
        int a=10;
        class Inner{
                static int b=20;        //此行会报错
                public void show(){
                System.out.println(a);
                System.out.println(b);
                }
        }
}

OX$U]LX2237[4LE_J(G1}CB.png (11.93 KB, 下载次数: 246)

OX$U]LX2237[4LE_J(G1}CB.png

作者: 刘辰阳    时间: 2015-11-8 22:43
路过!!!!!!!!!
作者: 1026060341    时间: 2015-11-8 22:43
因为,首先非静态内部类,属于对象,不属于类,会在对象创建的时候生成,静态成员会在类加载的时候被被初始化,而非静态内部类会在对象创建后才加载进内存,不太符合静态成员的定义
作者: nice非飞    时间: 2015-11-8 22:46
估计是跟类加载有关,外部类先加载,内部类后加载,而且依赖于外部类。
作者: 孙建志    时间: 2015-11-9 21:07
nice非飞 发表于 2015-11-8 22:46
估计是跟类加载有关,外部类先加载,内部类后加载,而且依赖于外部类。

那对内部类的静态成员有啥关系。
作者: 小笨笨天    时间: 2015-11-9 21:12
个人认为应该是在内存中的生成顺序有关系    静态对象在类对象之前就生成加载  这就与你定义的不相符了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2