本帖最后由 一枚小小媛 于 2015-7-31 21:42 编辑
我是这么理解的
①静态方法 可以在没有产生类对像的时候使用(利用 类名.方法名 调用)
②非静态方法必须产生类对像才可以使用(类 对象名 = new 类 -> 对象名.方法名 )
③被static修饰的对象,在相同JVM中只有唯一实例。表现出来就是其他对象共享此对象 (共用相同的对象)
④一个类的静态成员(变量和方法)其实可以说是属于类本身的,在类加载的时候就会分配内存,可以通过类名直接去访问。而非静态成员(变量和方法)属于类的对象,所以只有在类的对象产生(创建类的实例)时才会分配内存,然后通过类的对象去访问这些非静态的成员(变量和方法)。
试想一下,一个类的对象还没new出来,这个非静态的方法就和类一起被加载了?是不是有一点穿越的感觉撒?所以这种前后顺序,规定了非静态的方法不能调用已经是静态修饰的成员。
|