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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 申延超 中级黑马   /  2012-11-29 11:44  /  1501 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

静态类只能访问静态字段,而非静态类既能访问非静态字段,也能访问静态字段。
关于这个也查了些资料,可还是明白的不透彻,麻烦各位同学帮忙释下疑,谢谢

3 个回复

倒序浏览
静态字段初始化类,也就是说在内存中加载类是加载;而非静态字段初始化对象,要在实例化对象时随着对象加载进堆内存。所以说,静态字段先加载不可以访问后加载的(未加载之前内存中不存在),后加载的可以访问先加载的(内存中已经存在了)。
回复 使用道具 举报
对于一个类class Temp{      
        int Normal;                                   
static int  Static;      
static int getValue(){ return Static;}   
};

当使用这个类定义了两个变量的时候,比如Temp a,b;在内存中,a和b对象分别持有一个Normal成员,但他们共同持有Static成员。
也就是如果你给a的Normal赋值,不会影响b的Normal;但是如果你给a的Static赋值,b的Static也会受到影响,
因为他们共同持有Static。Normal在内存中可以被分配很多个不同的值,但Static只有一个,就像只有一个地球,如果你挖一个坑,那么别人也会看到这个坑。对于静态方法getValue,由于内存中只存在一个getValue方法,
所以当你调用它的时候,计算机就不知道应该返回的是a的Normal还是b的Normal。如果你使用了第一种方法,不论是谁调用的,计算机都会找到唯一的Static,从而正确返回。
回复 使用道具 举报
静态类可以在实例化之前调用,也就是说不需要实例化该类,就可以调用该类的静态方法,如果该类中有静态方法,那么该类也必须是静态类
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马