成员函数的说明和使用
1:类成员函数的描述
成员相当于C或C++中的函数。你应该用下面的方式解释一个成员函数:
typename(parameter)
/function body
注意:每个成员函数都必须返回值或者声明为空(void)。其返回类型的描述告诉编译器它将返回什么类型的值。在某些情况下,成员函数需要指出它是否成功地完成了它的工作,返回类型通常是Boolean。参数表是一组用逗号分隔的变量,它将为成员函数提供所需的信息。
下面的示例中定义了一个成员函数。通过它,你的矩形类可以计算自己的面积:
int getArea(int w,int h)
{
int a;
a = w * h;
返回一个;
}
另外,矩形还需要描述自身,所以需要成员函数drawRect()。此时,矩形类的定义如下:
public class drw rect
{
public static void main(String args[])
{
类Rectangle
{
int width,height,area
公共矩形(int w,int h)
{
width = w;
height = h;
area=getArea(w,h);
}
protected int getArea(int w,int h)
{
int a;
a = w * h;
返回一个;
}
public void drawRect()
{
int I,j;
for(I =宽度;I > 0;I-)
system . out . print(" # ");
system . out . print(" ");
for(I =身高-2;I > 0;I-)
system . out . print(" # ");
for(j =宽度-2;I > 0;j-)
system . out . print(" ");
system . out . print(" # ");
for(I =宽度;I > 0;I-)
system . out . print(" # ");
system . out . print(" ");
}
}//矩形
int w=Integer.valueOf(args[0])。int value();
int h = integer . value of(args[1])。int value();
Rectangle my rect =新矩形(w,h);
my rect . drawrect();
}
}
在上面的例子中,最后一个“#”后面有一个System.out.print(" ")。这是因为当前一行没有结束并且缓冲区没有溢出时,这个成员函数不会将输出写到屏幕上。如果使用了print成员函数,但没有得到输出,请仔细检查是否用""结束了输出流。
2:不同类型的成员函数
在上面例子中的成员函数声明中,需要注意两点:getArea()定义为private,drawRect()定义为public。类型public意味着任何类都可以调用它。Private,只能在声明的类内部调用。这些描述类型也适用于数据变量。
如果有人想更改私有变量,他们通常会引用下面的成员函数:
public void set width(int w)
{
width = w;
}
注意:在Java中,protected只是作为一个关键字出现,没有对应的函数。
3:成员函数重载
如果在不同的情况下,你必须向同一个成员函数发送不同的信息,你该怎么办?你可以通过指定这个成员函数的多个版本来实现重载。重载的本质是创建一个新的成员函数:你只需要给它一个不同的parameterlist,如下例所示:
void get Area(int w,int h);
void get区域(float w,float h);
第二种情况,成员函数get Area()接受两个浮点变量作为其参数,编译器根据调用时参数的不同决定调用哪个成员函数。如果给成员函数提供两个整数,调用第一个成员函数;如果向成员函数提供两个浮点数,将调用第二个成员函数。
4:静态成员
除了public、private和protected,还可以将成员描述为static(静态)。静态修饰符表示变量或成员函数对于一个类的所有实例都是相同的。您可能希望使用一个所有Rectangle类都可以使用的变量来描述类的版本。如果您将其描述为静态的,则该变量对于该类的所有实例都是相同的,例如:
静态int版本= 1;
静态成员函数和静态变量的优点是它们可以被引用,而不需要创建类的任何实例。引用时,类名可以直接用在“.”之前不使用对象名的域。比如drawRect成员函数使用了System.out.println成员函数,但实际上你从来没有创建过某个系统类的对象。正因为out是System类的静态变量,所以可以直接使用这个成员函数,而不需要定义系统对象。
5:构造和分析构造函数
类有一个特殊的成员函数叫做构造函数,通常用来初始化类的数据成员。创建对象时,会自动调用该类的构造函数。Java中的构造函数必须与这个类同名。此外,构造函数通常由公共类型来解释,因此可以在程序中的任何位置创建该类的实例对象。
下面是一个Rectangle类的构造函数,它带两个参数,分别代表矩形的长度和宽度:
public rectangle (int w,int h)
{
width = w;
height = h;
area=getArea(w,h);
}
除了构造成员函数之外,该类还提供了一个分析成员函数,当从内存中删除一个对象时,将自动调用该函数。通常,在构造函数中,可以填入用于回收对象内部动态空的代码。
位律师回复
0条评论