黑马程序员技术交流社区

标题: 求解 内部类问题? [打印本页]

作者: Gaara    时间: 2013-1-31 11:31
标题: 求解 内部类问题?
本帖最后由 张文彬 于 2013-2-1 20:26 编辑

为什么静态内部类的实例方法不能访问外部类的实力属性那??
作者: 柴乔军    时间: 2013-1-31 11:36
静态内部类在类加载阶段是先进入方法区的,由于对象不明确,所以不能确定调用的是外部类的哪个实力对象,也就不能确定是哪个实例对象的特有属性了,
就好比,静态的成员方法不能访问非静态的成员变量是一个道理
作者: 逍林游    时间: 2013-1-31 11:48
静态类内部的非静态成员可以访问外部类的静态变量,而不能访问外部类的非静态变量!
你想想啊,静态成员是属于类的成员,不属于实例对象。如果静态内部类的成员访问了外部类的非静态变量(属于实例对象),这个变量没被初始化,肯定会报错!
作者: Gaara    时间: 2013-1-31 14:34
逍林游 发表于 2013-1-31 11:48
静态类内部的非静态成员可以访问外部类的静态变量,而不能访问外部类的非静态变量!
你想想啊,静态成员是 ...

谢谢啊  你这句“静态成员是属于类的成员,不属于实例对象”让我豁然开朗啊
作者: Gaara    时间: 2013-1-31 14:34
柴乔军 发表于 2013-1-31 11:36
静态内部类在类加载阶段是先进入方法区的,由于对象不明确,所以不能确定调用的是外部类的哪个实力对象,也 ...

谢谢啊  懂了  非常感谢

作者: 黄锦成    时间: 2013-1-31 15:24
静态内部类有静态方法的特性:静态的不能访问实例属性。这个跟静态方法内部不能直接访问实例属性那样。
作者: 铿锵科技    时间: 2013-2-1 01:18

为什么静态内部类的实例方法不能访问外部类的实力属性那?
静态为加载到内存时就有的实例,外部类加载到内存还没有实例,所以不行
作者: 王钊    时间: 2013-2-1 07:21
可以把静态内部类想象成外部类的一个静态方法,那么有一条规律你可以记住,就是“静态的只能访问
静态的,而非静态的既可以访问静态的也可以访问非静态的”,所以你在静态内部类访问外部类的实例(非静态)
成员就会失败。




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