一个小问题,望高手赐教

migo2008 2007-08-24 01:30:41
class Test2
{
public static void main(String[] args) {
B b=new B();
}
}


class B
{
public B()
{

System.out.println("I'm B");
}
D d=new D();
}

class D
{
public D()
{
System.out.println("I'm D");
}
}

这行代码为什么会先执行D d=new D();而不是先执行 B的购造方法??
...全文
108 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
migo2008 2007-08-24
  • 打赏
  • 举报
回复
谢谢各位,明白了
liky5387 2007-08-24
  • 打赏
  • 举报
回复
JAVA装载在类的时候,它是有顺序的,先装载父类的STATIC变量,后装载子类的STATIC变量,再装载父类的基本数据类型变量,后装载子类的基本数据类型变量.然后才是OBJECT的装载,最后才是调用子类的构造函数。不知道这样跟你解释,您是还能看明白.
边城狂人 2007-08-24
  • 打赏
  • 举报
回复
D d=new D();
这一句是在构造对象,申明成员变量的时候就执行了。
B()是在申明成员变量以及它们的初始化(也就是申明时的赋值)完成之后才执行。
wuhaozhiyuan 2007-08-24
  • 打赏
  • 举报
回复
在类初始化的时候,现初始化成员变量(不知道表达准不准)也就是你例子中
象D d=new D();这样的变量,然后才调用类的构造方法.

62,623

社区成员

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

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