Java牛角尖【003】:類初始化時的執行順序

來源:互聯網
上載者:User

   在初始化一個類時,到底是先執行哪一部分,總體的執行順序是什麼樣的呢,同樣,當類被釋放時,又是怎樣一個順序呢?先來看下面的代碼好了。

 

package net.moon.insignificant.commonclass;</p><p>class CommonSubClass extends CommonSupperClass {<br />static {<br />System.out.println("Common sub static initial");<br />}</p><p>public CommonSubClass() {<br />System.out.println("Common sub construct");<br />}</p><p>@Override<br />protected void finalize() throws Throwable {<br />// TODO Auto-generated method stub<br />System.out.println("Common sub finalize");<br />super.finalize();</p><p>}<br />}</p><p>abstract class CommonSupperClass {<br />public CommonSupperClass() {<br />System.out.println("Common super construct");<br />}</p><p>static {<br />System.out.println("Common supper static initial");<br />}</p><p>@Override<br />protected void finalize() throws Throwable {<br />// TODO Auto-generated method stub<br />System.out.println("Common supper finalize");<br />super.finalize();</p><p>}<br />}</p><p>public class Demo {<br />public static void main(String[] args) {<br />// TODO Auto-generated method stub<br />CommonSubClass css = new CommonSubClass();<br />css = null;<br />System.gc();</p><p>}</p><p>}<br />

  只要運行上面的代碼,結果如下:

Common supper static initial<br />Common sub static initial<br />Common super construct<br />Common sub construct<br />Common sub finalize<br />Common supper finalize

  其實大家已經清楚,在初始化時,執行的順序是:

1.  父類的靜態代碼塊

2. 子類的靜態代碼塊

3. 父類的構造方法

4. 子類的構造方法

 

  釋放資料時,執行的順序是:

1. 子類的finalize方法

2. 父類的finalize方法

 

  只是這裡一個意外是:竟然父類為抽象類別時也同樣會調用父類的構造方法,看來抽象類別在虛擬機器內部還是被執行個體化了。

 

  下一篇: Java牛角尖【004】:Final類可以有protected屬性或方法嗎?

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.