随笔-95  评论-31  文章-10  trackbacks-0
类初始化顺序:
1、首先是所有父类的static初始化,按代码中出现的顺序(意思是代码块和赋值语句),最后到子类的static的初始化,依然按代码中出现的顺序
2、其次是所有父类的非static初始化,按代码中出现的顺序(意思是代码块和赋值语句),然后执行父类的构造函数,最后到子类的非static的初始化,依然按代码中出现的顺序。
3、最后才是子类构造函数里面的内容。
4、如果构造里面出现super(...)或者this(...),那么是super(...)的话先到父类去,然后从1开始;如果是this(...)的话,那么先到this(...)所指的构造中去,然后默认执行super()(如果没有super(...)的话),然后就从1开始(如果有static的话)。这里强调一点:static的代码块和赋值语句只执行一遍,比如 在main方法里面连续new 子类() 两个,那么第二个new 子类()将直接从2开始初始化。

以上就是一个类初始化的顺序!
在强调一点:
《1》static的初始化与是否new 构造无关,只要调用类.属性,类.方法;类.属性=、new 类()就会进行初始化并赋值
《2》非static的初始化仅仅只在new 构造
posted on 2012-06-13 21:52 朔望魔刃 阅读(234) 评论(0)  编辑  收藏 所属分类: java

只有注册用户登录后才能发表评论。


网站导航: