Java中的繼承關係的載入順序,java繼承載入順序

來源:互聯網
上載者:User

Java中的繼承關係的載入順序,java繼承載入順序


/*在載入類時,Java虛擬機器先載入父類再載入子類,再對靜態初始化塊、靜態成員變數(類變數)、靜態方法進行一次初始化。只有調用new方法時才會建立類的對象。按照父子繼承關係進行初始化,首先執行父類的初始化塊部分,然後是父類的構造方法,再執行子類的初始化塊,最後是子類的構造方法。銷毀對象的過程是:首先銷毀子類部分,再銷毀父類部分。*/public class InheritanceLoadOrder {public static void main(String[] args) {System.out.println("不建立對象直接存取靜態方法時的輸出:");Child.childMethod();System.out.println("\n\t>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n");System.out.println("通過new建立對象,訪問非靜態方法時的輸出:");new Child("").display();System.gc();//通知虛擬機器進行記憶體回收}}class Parent{private int x = 15;private static int y = getValue(20);{System.out.println("執行Parent的初始化代碼塊");int x = 70;int y = getValue(30);}static{System.out.println("執行Parent的靜態初始化代碼塊");int sx = 70;int sy = getValue(30);}public Parent(){System.out.println("Parent預設建構函式被調用");}public void display(){System.out.println("Parent的display方法被調用");System.out.println("x = " + this.x + " ; y = " + y);parentMethod();}public static void parentMethod(){System.out.println("Parent的parentMethod方法被調用");}public static int getValue(int num){System.out.println("Parent的getValue(int num)方法被調用");return ++num;}//當Java在進行記憶體回收時,會自動地調用對象的finalize()方法protected void finalize(){System.out.println("Parent對象被垃圾收回器收回");}}class Child extends Parent{{System.out.println("執行Child的初始化代碼塊");int z = 30;}static {System.out.println("執行Child的靜態初始化代碼塊");}public Child(){super();System.out.println("Child的構造方法被調用");}public Child(String str){System.out.println("Child帶參的構造方法被調用");}public static void childMethod(){System.out.println("Child的childMethod方法被調用");}//當Java在進行記憶體回收時,會自動地調用對象的finalize()方法protected void finalize(){System.out.println("Child對象被垃圾收回器收回");}}/*只有在建立一個對象時,才會按先父類後子類的順序初始化類的初始化塊、構造方法等。如果只訪問類的靜態方法,Java虛擬機器不會初始化這些代碼。對於每個類,Java虛擬機器只載入一次,在載入時,初始化類的靜態方法、靜態變數以及靜態初始化塊。System類的gc()方法用於通知Java虛擬機器進行記憶體回收,但不保證會立即執行,至於何時進行記憶體回收,完全由虛擬機器決定。在進行記憶體回收時,虛擬機器會調用對象的finalize()方法。*/



運行結果:

                                  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.