黑马程序员技术交流社区

标题: 静态成员与非静态成员问题 [打印本页]

作者: 申延超    时间: 2012-11-29 11:44
标题: 静态成员与非静态成员问题
静态类只能访问静态字段,而非静态类既能访问非静态字段,也能访问静态字段。
关于这个也查了些资料,可还是明白的不透彻,麻烦各位同学帮忙释下疑,谢谢

作者: 冯盼    时间: 2012-11-29 12:06
静态字段初始化类,也就是说在内存中加载类是加载;而非静态字段初始化对象,要在实例化对象时随着对象加载进堆内存。所以说,静态字段先加载不可以访问后加载的(未加载之前内存中不存在),后加载的可以访问先加载的(内存中已经存在了)。
作者: 黑马_郑亮新    时间: 2012-11-29 12:15
对于一个类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,从而正确返回。

作者: 韩俊    时间: 2012-11-29 22:25
静态类可以在实例化之前调用,也就是说不需要实例化该类,就可以调用该类的静态方法,如果该类中有静态方法,那么该类也必须是静态类




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