A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Gaara 高级黑马   /  2013-1-31 11:31  /  1398 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张文彬 于 2013-2-1 20:26 编辑

为什么静态内部类的实例方法不能访问外部类的实力属性那??

评分

参与人数 1黑马币 +9 收起 理由
Rancho_Gump + 9

查看全部评分

7 个回复

倒序浏览
静态内部类在类加载阶段是先进入方法区的,由于对象不明确,所以不能确定调用的是外部类的哪个实力对象,也就不能确定是哪个实例对象的特有属性了,
就好比,静态的成员方法不能访问非静态的成员变量是一个道理

评分

参与人数 1黑马币 +9 收起 理由
Rancho_Gump + 9

查看全部评分

回复 使用道具 举报
静态类内部的非静态成员可以访问外部类的静态变量,而不能访问外部类的非静态变量!
你想想啊,静态成员是属于类的成员,不属于实例对象。如果静态内部类的成员访问了外部类的非静态变量(属于实例对象),这个变量没被初始化,肯定会报错!

评分

参与人数 1黑马币 +9 收起 理由
Rancho_Gump + 9

查看全部评分

回复 使用道具 举报
逍林游 发表于 2013-1-31 11:48
静态类内部的非静态成员可以访问外部类的静态变量,而不能访问外部类的非静态变量!
你想想啊,静态成员是 ...

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

谢谢啊  懂了  非常感谢
回复 使用道具 举报
静态内部类有静态方法的特性:静态的不能访问实例属性。这个跟静态方法内部不能直接访问实例属性那样。
回复 使用道具 举报

为什么静态内部类的实例方法不能访问外部类的实力属性那?
静态为加载到内存时就有的实例,外部类加载到内存还没有实例,所以不行
回复 使用道具 举报
可以把静态内部类想象成外部类的一个静态方法,那么有一条规律你可以记住,就是“静态的只能访问
静态的,而非静态的既可以访问静态的也可以访问非静态的”,所以你在静态内部类访问外部类的实例(非静态)
成员就会失败。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马