Java中的实例⽅法和类⽅法
如同类的成员变量有实例变量和类变量两种⼀样,类的⽅法也有两种:实例⽅法和类⽅法。在⽅法定义时,冠以修饰字static的⽅法称为类⽅法,没有冠以static修饰字的⽅法是实例⽅法。
1.类D定义了⼀个实例⽅法,两个类⽅法。
class D{
int a;//实例变量
static int c;//类变量
float max(int x,int y)//实例⽅法
{a = x>y?x:y;}
static int setCount(int c0)//类⽅法
{ c=c0;}
static void incCount(int step)//类⽅法
{c+=step;}
}
类中的实例⽅法可以互相调⽤,并可调⽤类⽅法。类⽅法也能相互调⽤,但不能直接调⽤实例⽅法,除⾮类⽅法引⼊局部对象,然后通过局部对象调⽤实例⽅法。另外,类⽅法能直接引⽤类变量,不能引⽤实例变量。实例⽅法可引⽤实例变量,也可引⽤类变量。
2.给出的类声明中有些是合法的代码,⽽有些是不合法的代码。
class E{
float u;
static float v;
static void setUV(boolean f){
u = s_m(f);// ⾮法,类⽅法不可以调⽤实例变量u
v = s_m(f);//合法,类⽅法可以调⽤类⽅法
v = r_m(!f);//⾮法,类⽅法不能直接调⽤实例⽅法。
}
static float s_m(boolean f){
return f?u:v;//⾮法,类⽅法只能类变量
}
float r_m(boolean f){
return f?u:v;//合法,实例⽅法能引⽤实例变量和类变量
}
}
实例⽅法可以访问类变量和当前对象的实例变量。实例⽅法必须通过对象调⽤,不能通过类名调⽤。类⽅法只能类变量,
不能够访问实例变量。类⽅法除了可以通过实例对象调⽤之外,还可以通过类名调⽤。
3.说明类变量⽤法的,应⽤程序。改写Point类的声明,在Point类中增加⼀个类变变量pCount,它的初值为0。在构造⽅法中,有类变量pCount增1的代码,这能记录类的对象个数。
public class Example3_2{
public static void main(String args[]){
Point p1,p2,p3;
p1 = new Point();
p2 = new Point(40,50);
p3 = new X()+p2.getX(),p1.getY()+p2.getY());
System.out.println(“p3.x=”+p3.getX()+”,p3.y=”+p3.getY());
Point p4 = new Point(p1.x,p2.y);
System.out.println(“p4.x=”+p4.x+”,p4.y=”+p4.y);
System.out.println(“程序共有Point对象”+Point.pointNum()+ “个”);
}
}
class Point{
int x,y;
static int pCount =0;
Point(){
x=10;
y=20;
pCount++;
}
Point(int x,int y){
static修饰的变量
this.x = x;
this.y=y;
pCount++;
}
static int pointNum(){return pCount;}
int getX(){ return x; }
int getY(){ return y; }
}
由于java系统内设废弃内存回收程序,所以⼀般情况下,⼀个对象使⽤结束后,程序不必特别通知系统撤销对象。但有时为提⾼系统资源的利⽤率,程序也可通过调⽤⽅法finialize()显式通知系统,请求系统撤销对象。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论