欢迎来到天天文库
浏览记录
ID:5840543
大小:26.00 KB
页数:2页
时间:2017-12-25
《成员变量、实例变量、类变量、成员方法、实例方法、类方法的区别》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、成员变量、实例变量、类变量、成员方法、实例方法、类方法的区别2010-04-1115:18简单来说:类体的定义包括成员变量的定义和方法的定义。1、成员变量包括实例变量和类变量;而成员方法包括实例方法、类方法,当然还有一种特殊的构造方法。2、类变量、类方法就是类中的变量、方法,必须是静态的,要加static;故其又称静态变量、静态方法。3、成员变量、成员方法是对象或实例中的变量、方法,不加static;类变量:静态域,静态字段,或叫静态变量,它属于该类所有实例共有的属性,在内存中只有一个地方存储这个变量。而且所有的实例都可以修改这个类变量的值(前提是这个类变量没有被final修
2、饰,否则是常量了),而且访问类变量的时候不用实例,直接用类就可以了。类方法:和类变量一样,可以不用实例,直接用类就可以调用类方法。实例变量:实例域,实例字段,或叫成员变量。实例方法:或叫成员方法,必须先有实例,然后才能通过实例调用该实例方法。使用方法:类方法可以直接调用类变量和类方法 类方法不可以直接调用实例变量和实例方法 类方法中没有this,因为没有实例,this不知道调用哪个实例 类方法可以从类里面直接访问类成员 实例方法可以调用类方法,访问类变量,但是不提倡这样做
3、,会把类方法和类变量混淆成实例方法和实例变量程序实例:classAnIntegerNamedX{ intx; //这个是成员变量 publicintx(){ //成员方法 returnx; } publicvoidsetX(intnewX){ //成员方法 x=newX; }}publicclassPractice{ publicstaticvoidmain(Stringargs[]){ AnIntegerNamedXmyX=newAnIntegerNamedX();
4、 AnIntegerNamedXanotherX=newAnIntegerNamedX(); myX.setX(1); anotherX.x=2; System.out.println("myX.x="+myX.x()); System.out.println("anotherX.x="+anotherX.x()); }}2:classAnIntegerNamedX{ staticintx; //这里写成static,结果就变成全是2了,因为类变量是被实例所共享的,包括m
5、yX和anotherX 调用anotherX时所有的所有实例都改变了。publicintx(){ returnx;}publicvoidsetX(intnewX){ x=newX;}}publicclassPractice{ publicstaticvoidmain(Stringargs[]){ AnIntegerNamedXmyX=newAnIntegerNamedX(); AnIntegerNamedXanotherX=newAnIntege
6、rNamedX(); myX.setX(1); anotherX.x=2; //这里把X的值改成2,所有实例的X都是2了,因为类变量是被所有实例共享的,任何实 例都可以对类变量做最终的修改 System.out.println("myX.x="+myX.x()); System.out.println("anotherX.x="+anotherX.x()); }} 3:
7、同样的,当把那两个方法都加上static变成类方法的时候,会提示错误让你把X变成静态,是应为类方法不能直接访问实例变量!
此文档下载收益归作者所有