执行volume()方法确实将计算盒子体积的值返回到Box类,但这并不是最好的方法。例如,你的程序的其他部分如何知道一个盒子的体积,而不显示它的值?一个更好地实现volume()的方法是将它计算的盒子体积的结果返回给它的调用者。
下面的例子是对前面程序的改进,它正是这样做的:
// Now,volume() returns the volume of a box.
class Box {
double width;
double height;
double depth;
// compute and return volume
double volume() {
return width * height * depth;
}
}
class BoxDemo4 {
public static void main(String args[]) {
Box mybox1 = new Box();
Box mybox2 = new Box();
double vol;
// assign values to mybox1's instance variables
mybox1.width = 10;
mybox1.height = 20;
mybox1.depth = 15;
/* assign different values to mybox2's
instance variables */
mybox2.width = 3;
mybox2.height = 6;
mybox2.depth = 9;
// get volume of first box
vol = mybox1.volume();
System.out.println("Volume is " + vol);
// get volume of second box
vol = mybox2.volume();
System.out.println("Volume is " + vol);
}
}
在这个程序中,当volume()被调用时,它被放在赋值语句的右边。左边是接收volume()返回值的变量。因此,当下面的语句执行后:
vol = mybox1.volume();
变量mybox1.volume ( )的值是 3,000,且该值被保存在vol中。
对于返回值的理解,要注意下面两件重要的事情:
· 方法返回的数据类型必须与该方法指定的返回类型相兼容。例如,如果一个方法的返回值是布尔型,就不可能返回整数。
· 接收方法返回值的变量 (例如本例中的变量 vol)也必须与指定方法返回值的类型相兼容。
另外一点:因为实际上不需要vol变量,前面的程序可以被写得更高效一些。
对volume( )方法的调用可以直接用在 println ( )语句中,如下面的语句:
System.out.println("Volume is " + mybox1.volume());
在本例中,当println ( )被执行时,mybox1.volume ( )将自动地被调用,而且它的值会被传递给println ( )。