类的构造函数到底是在什么时间被调用的??

Anol 2003-10-15 10:18:32
对象被创建时?还是在调用对象时??
如下代码的执行结果??

class Box {
double width,height,depth;
Box() {
width=10;
height=3;
depth=2;
}
double volume(){
System.out.println("Constructing Box....");
return width*height*depth;
}
}
class BoxDemo6 {
public static void main(String args[]) {
Box mybox1=new Box();
Box mybox2=new Box();
double vol;
vol=mybox1.volume();
System.out.println("Volume is "+vol);
vol=mybox2.volume();
System.out.println("Volume is "+vol);
}
}
...全文
329 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
quanch 2003-10-15
  • 打赏
  • 举报
回复
楼主真晕!^_^
Anol 2003-10-15
  • 打赏
  • 举报
回复
就是,就是,疯度翩翩兄说的太对了!!

偶错了,真是罪过罪过!!

笑话了!!
yyt99 2003-10-15
  • 打赏
  • 举报
回复
晕。你看看你的程序:
class Box {
double width,height,depth;
Box() {
width=10;
height=3;
depth=2;
}
double volume(){
System.out.println("Constructing Box....");
return width*height*depth;
}
}

你的那句System.out.println("Constructing Box....");是在volume这个method中写的,当然是在调用这个method时执行System.out.println("Constructing Box....");了。而你的构造函数根本没有println语句。

我估计你是写错地方了。你想要打出Constructing Box....这句话,而实际上,根据这句话的意思应该把System.out.println("Constructing Box....");放在构造函数中去。
像这样:class Box {
double width,height,depth;
Box() {
System.out.println("Constructing Box....");
width=10;
height=3;
depth=2;
}
double volume(){
return width*height*depth;
}
}
结果便是:
Constructing Box...
Constructing Box...
Volume is 60.0
Volume is 60.0
Anol 2003-10-15
  • 打赏
  • 举报
回复
哦,这么说看来是书上的错了!!

seaman0916 2003-10-15
  • 打赏
  • 举报
回复
楼上说的没错!

对类对象进行初始化是就会调用构造函数!
Anol 2003-10-15
  • 打赏
  • 举报
回复
如果是在创建时,就调用构造函数。那么上述代码的执行结果应该是:
Constructing Box...
Constructing Box...
Volume is 60.0
Volume is 60.0
可我的执行结果却是:
Constructing Box....
Volume is 60.0
Constructing Box....
Volume is 60.0
到底时怎么回事????????????
quanch 2003-10-15
  • 打赏
  • 举报
回复
当然是创建时,确切的讲就是在new时,两个vol应该一样的。
nightsuns 2003-10-15
  • 打赏
  • 举报
回复
在对象生成的时候,也就是说,如果你定义了对象,但是没有创建它的实例,
那么它的构造函数是永远都不会调用的!

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧