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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 潘廖明 中级黑马   /  2013-3-15 00:39  /  1854 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 潘廖明 于 2013-3-15 23:41 编辑

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

点评

如果问题已经解决了,请将分类改为已解决,谢谢  发表于 2013-3-15 08:13

评分

参与人数 1黑马币 +12 收起 理由
黄玉昆 + 12

查看全部评分

5 个回复

倒序浏览
在内存中静态优先于对象存在。
回复 使用道具 举报
静态类和非静态的区别。
1、非静态类中可以有静态成员
2、调用:实例类调用自己的非静态方法的时候,需要对象名.方法名();
实例类调用自己的静态方法的时候,需要类名.方法名();【静态方法只能通过类名.方法名()调用】
3、静态方法中只能访问到静态成员
4、静态类中不允许出现实例成员,哪怕是方法也不行
5、不能创建静态类的对象
总结:静态类中只能存在静态成员,不允许出现实例成员。
但是我们非静态类中可以有静态成员,也可以有非静态成员,
但是,静态成员访问不到实例成员。
非静态类中的非静态成员可以访问到静态成员。

评分

参与人数 1黑马币 +9 收起 理由
黄玉昆 + 9

查看全部评分

回复 使用道具 举报
静态内部类在使用上有很多的限制因素。可以这么说:
当静态内部类的对象存在时,并不存在一个被它寄存的外部类对象,
静态内部类的对象里只有外部类的类引用,没有外部类的对象引用,
如果允许静态内部类的实例方法访问外部类的实例成员,但找不到被寄存的外部类对象,将引起错误。
希望能帮到你一点点。
回复 使用道具 举报

为什么静态内部类的实例方法也不能访问外部类的实例属性 ? 直接上代码奉上:
代码:
        private  int x = 3;

       
        static class Inner//静态内部类
        {
                void function()
                {
                        System.out.println("innner :"+x);  //(aaa)处x编译报错,,
                }
        }

为什么(aaa)处 的x会报错呢???,,,
因为Inner也是外部类成员,静态Inner,不能直接访问非静态的变量x,,此时还没有对象,这个静态 Inner 要访问的是对象的x,你连对象都没有,,,因为实例变量是随着对象的建立而存在于堆内存中,,,也就是实例变量存在对象里面,,所以这个x就没在内存中存在过 ,,,因为先来后到,静态先在了,那个非静态x还没在,我当然不能访问你了。,, static int x这样写就对



评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
为什么静态内部类的实例方法也不能访问外部类的实例属性 ?
------你提的问题并不成立,内部类的实例方法也是可以能访问外部类的实例属性的。
————请先验正你的代码没有出错!!!
原因:静态成员不能直接访问非静态成员,只能访问非静态的实例对象。
请做参考:
package mypack1;

public class outter {//外部类
        int b = 0;

        static class inner {//内部类
               
                void show() {
                        outter out=new outter();//外部类实例对象
                        int c=out.b;        //外部类的实例属性
                        System.out.println(c);//静态内部类的实例方法访问外部类的实例属性
                }
        }
       
        public static void main(String[] args) {
        inner in=new outter.inner();// 内类类实例对象
       
                in.show();//静态内部类的实例方法访问外部类的实例属性
        }
}

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马