虽然在前面的例子中,Box构造函数确实初始化了Box对象,但它不是很有用,因为所有的盒子都是一样的尺寸。我们所需要的是一种能够构造各种各样尺寸盒子对象的方法。比较容易的解决办法是对构造函数增加自变量。你可能已经猜到,这将使他们更有用。例如,下面版本的Box程序定义了一个自变量构造函数,它根据自变量设置每个指定盒子的尺寸。特别注意Box对象是如何被创建的。
class Box {
double width;
double height;
double depth;
Box(double w,double h,double d) {
width = w;
height = h;
depth = d;
}
double volume() {
return width * height * depth;
}
}
class BoxDemo7 {
public static void main(String args[]) {
Box mybox1 = new Box(10,20,15);
Box mybox2 = new Box(3,6,9);
double vol;
vol = mybox1.volume();
System.out.println("Volume is " + vol);
vol = mybox2.volume();
System.out.println("Volume is " + vol);
}
}
该程序的输出如下:
Volume is 3000.0
Volume is 162.0
正如你看到的,每个对象被它的构造函数指定的参数初始化。例如,在下行中,Box mybox1 = new Box(10,20,15); 当new创建对象时,值10,20,15传递到Box()构造函数。这样,mybox1 的拷贝width、height、depth将分别包含值10、20、15。