关于JAVA中构造函数

来源:百度知道 编辑:UC知道 时间:2024/05/29 19:19:47
public class Point {
protected int x, y; // 点的坐标

// 构造函数
public Point() { setPoint( 0, 0 ); }

// 构造函数
public Point( int a, int b ) { setPoint( a, b ); }

// Set x 和 y 点的坐标
public void setPoint( int a, int b )
{
x = a;
y = b;
}

// 获得 x 坐标
public int getX() { return x; }

// 获得 y 坐标
public int getY() { return y; }

// 转换点坐标以字符串表示
public String toString()
{ return "[" + x + ", " + y + "]"; }
}

这个程序里面 public Point( int a, int b ) { setPoint( a, b ); }里面的setPoint(a,b)这个也是构造函数吗?还是它是方法??但前面怎么没有类型的定义比如void呀

构造函数是与类同名的函数(!只有与类同名的函数才有可能是构造函数),不带返回值修饰,可以带参数,可以不写类型声明(public/private/protected)可以引用类中声明的方法/变量,可以对变量进行初始状态的设定.构造函数将在对象初始化时首先被调用,所以不需要返回值.构造函数可以声明多个,多个构造函数的参数必须不同.

拿你的例子来说,与类同名且不带返回值的函数只有一个,那就是构造函数:
public Point( int a, int b ) ,它的意思是:用参数a和b来对Point类的对象进行初始化,里面调用了setPoint的方法,就是说:使用此方法构造的Point类对象初始的位置不是(0,0),而是(a,b).

另外,你也可以根据自己的需要声明其他的构造函数,比如:
public Point(Point p),用一个已经存在的Point类对象初始化本实例,本实例具有与p相同的坐标点
public Point(Point p)
{
this.setPoint(p.x,p.y) ;
}

public Point(),默认的构造,实力对象的坐标点默认是(0,0) ;
public Point()
{
this.setPoint(0,0) ;
}

和类名相同的方法名,且没有返回类类型,我们把这个方法称为该类的构造方法,所以public Point() 和public Point( int a, int b ) 就都是构造方法或称为构造函数。而setPoint(a,b)只是该类中的一个方法。在程序里面不是有一个这样方法定义嘛。
public void setPoint( int a, int b )
{
x = a;
y = b;
}

所以在构造方法中,那个只是对setPoint方法一个调用。

public Point( int a, int b )
{
setPoint( a, b );