类初始化顺序:
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