Must know something of everything and everything of something!
JAVA构造函数重载
上一篇 /
下一篇 2007-04-04 10:49:59
/ 个人分类:Java
JAVA构造函数重载
M:E@io*H
YI:W0 Vx,j%O\B]"xS0
c2T||(zX0除了重载正常的方法外,构造函数也能够重载。实际上,对于大多数你创建的现实的类,重载构造函数是很常见的,并不是什么例外。下面是一个Box类的例子:51Testing软件测试网p;gtL\*f+x
#J!wKE7A&s
hK0
t:dl_ yi/U6j+@W051Testing软件测试网 JIJ{v?C
qp$rx在本例中,Box() 构造函数需要三个自变量,这意味着定义的所有Box对象必须给Box() 构造函数传递三个参数。例如,下面的语句在当前情况下是无效的:
~_C/GLq,s051Testing软件测试网L%m2y!mb+{ DBox ōb = new Box();51Testing软件测试网(m!v$HA v(sR7Xm
"]"Uyg3cX1L
~+b0因为Box( )要求有三个参数,因此如果不带参数的调用它则是一个错误。这会引起一些重要的问题。如果你只想要一个盒子而不在乎 (或知道)它的原始的尺寸该怎么办?或,如果你想用仅仅一个值来初始化一个立方体,而该值可以被用作它的所有的三个尺寸又该怎么办?如果Box 类是像现在这样写的,与此类似的其他问题你都没有办法解决,因为你只能带三个参数而没有别的选择权。
~]9y!T-n06JA~S,V,n0幸好,解决这些问题的方案是相当容易的:重载Box 构造函数,使它能处理刚才描述的情况。下面程序是Box 的一个改进版本,它就是运用对Box构造函数的重载来解决这些问题的:
5C1v_n5k0pFA)f@H~0
-Xu"B7g,m1O0该程序产生的输出如下所示:
t i)MG]0%?Uw3v%E0Volume of mybox1 is 3000.0
rI9Qfhq}0Volume of mybox2 is -1.0
}$x/o5]R!@.fMY[0Volume of mycube is 343.0
;xg2}3E}s@&A.{ Y"o.}E0yC&E;oJtm051Testing软件测试网 Yw3ku`l*AV
在本例中,当new执行时,根据指定的自变量调用适当的构造函数。
n&S.W%cg:R)]0
S\+Zj!wh!b1cqD0
收藏
举报
TAG:
java
重载
Overload
Java