请来看看这个程序 .有点疑问解不开!

shendegushi 2008-04-30 10:53:26
class Component1
{
Component1()
{
System.out.println("This is Component1!");
}


}

class Component2
{
Component2()
{
System.out.println("This is Component2!");
}
}
class Component3
{
Component3()
{
System.out.println("This is Component3!");
}
}
public class Root {

Root()
{
System.out.println("This is Root!");
}
Component1 aa=new Component1();
Component2 bb=new Component2();
Component3 cc=new Component3();

public static void main(String[] args) {

new Root();


}

} 这个程序为什么是先执行 Component1 aa=new Component1();
Component2 bb=new Component2();
Component3 cc=new Component3(); 然后才执行Root类的构造方法!
...全文
79 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq278095755 2008-05-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 aipb2008 的回复:]
对象的构造顺序,先静态域(定义顺序),非静态域(定义顺序),再是构造器
[/Quote]
qusic 2008-05-01
  • 打赏
  • 举报
回复
了解了!
bobor_2008 2008-05-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 aipb2008 的回复:]
对象的构造顺序,先静态域(定义顺序),非静态域(定义顺序),再是构造器
[/Quote]
支持!
KKK2007 2008-04-30
  • 打赏
  • 举报
回复
构造的顺序是先类属性,然后是构造函数
aipb2008 2008-04-30
  • 打赏
  • 举报
回复
对象的构造顺序,先静态域(定义顺序),非静态域(定义顺序),再是构造器
loujianchengdd 2008-04-30
  • 打赏
  • 举报
回复
同意1楼的看法。在用 new实例化对象时候首先将类中成员变量先初始化,然后才调用构造方法,调用构造方法的目的是
返回该类对象的引用,所以一定要确保对象的所有成员先初始化才能够返回引用。
shendegushi 2008-04-30
  • 打赏
  • 举报
回复
另外,,在main()方法中加上System.out.println("This is print");
结果 是
This is print
This is Component1!
This is Component2!
This is Component3!
This is Root!
anqini 2008-04-30
  • 打赏
  • 举报
回复
因为Component1 aa=new Component1();
Component2 bb=new Component2();
Component3 cc=new Component3();

都是成员变量,成员变量的初始化先执行,然后是Root构造体!

62,623

社区成员

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

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