詳解Java中類別的載入順序
本文介紹的是Java中類別的載入順序,以下來看看詳細的介紹:
1、虛擬機器在首次載入Java類別時,會對靜態初始化區塊、靜態成員變數、靜態方法進行一次初始化
2、只有在呼叫new方法時才會建立類別的實例
3、類別實例建立過程:依照父子繼承關係初始化,先執行父類別的初始化區塊部分,然後是初始化區塊部分,然後是父類別的建構方法;再執行本類繼承的子類別的初始化區塊,最後是子類別的建構方法
4、類別實例銷毀時候,先銷毀子類別部分,再銷毀父類別部分
範例
<span style="font-size: 14px;">public class Parent<br/>{<br/> public static int t = parentStaticMethod2();<br/> {<br/> System.out.println("父类非静态初始化块");<br/> }<br/> static<br/> {<br/> System.out.println("父类静态初始化块");<br/> }<br/> public Parent()<br/> {<br/> System.out.println("父类的构造方法");<br/> }<br/> public static int parentStaticMethod()<br/> {<br/> System.out.println("父类类的静态方法");<br/> return 10;<br/> }<br/> public static int parentStaticMethod2()<br/> {<br/> System.out.println("父类的静态方法2");<br/> return 9;<br/> }<br/> <br/> @Override<br/> protected void finalize() throws Throwable<br/> {<br/> // TODO Auto-generated method stub<br/> super.finalize();<br/> System.out.println("销毁父类");<br/> }<br/> <br/>}<br/>public class Child extends Parent<br/>{<br/> {<br/> System.out.println("子类非静态初始化块");<br/> }<br/> static<br/> {<br/> System.out.println("子类静态初始化块");<br/> }<br/> public Child()<br/> {<br/> System.out.println("子类的构造方法");<br/> }<br/> public static int childStaticMethod()<br/> {<br/> System.out.println("子类的静态方法");<br/> return 1000;<br/> }<br/> @Override<br/> protected void finalize() throws Throwable<br/> {<br/> // TODO Auto-generated method stub<br/> super.finalize();<br/> System.out.println("销毁子类");<br/> }<br/>}<br/>public class Test<br/>{<br/> <br/> public static void main(String[] args)<br/> {<br/> // TODO Auto-generated method stub<br/> Parent.parentStaticMethod();<br/>// Child child = new Child();<br/> <br/> }<br/><br/>}<br/></span>
輸出
<span style="font-size: 14px;">父类的静态方法2<br/>父类静态初始化块<br/>父类类的静态方法<br/></span>
類中static 方法在第一次呼叫時載入,類別中static成員依在類別中出現的順序載入。當呼叫靜態方法2時輸出
<span style="font-size: 14px;">父类的静态方法2<br/>父类静态初始化块<br/>父类的静态方法2<br/></span>
註解掉Parent.parentStaticMethod();
去掉註解Child child = new Child();
<span style="font-size: 14px;">父类的静态方法2<br/>父类静态初始化块<br/>子类静态初始化块<br/>父类非静态初始化块<br/>父类的构造方法<br/>子类非静态初始化块<br/>子类的构造方法<br/></span>
全部內容了,希望本文的內容對大家的學習或工作能帶來一定的幫助,如果有疑問大家可以留言交流。
更多詳解Java中類別的載入順序相關文章請關注PHP中文網!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

公司安全軟件導致部分應用無法正常運行的排查與解決方法許多公司為了保障內部網絡安全,會部署安全軟件。 ...

系統對接中的字段映射處理在進行系統對接時,常常會遇到一個棘手的問題:如何將A系統的接口字段有效地映�...

在使用MyBatis-Plus或其他ORM框架進行數據庫操作時,經常需要根據實體類的屬性名構造查詢條件。如果每次都手動...

將姓名轉換為數字以實現排序的解決方案在許多應用場景中,用戶可能需要在群組中進行排序,尤其是在一個用...

在使用IntelliJIDEAUltimate版本啟動Spring...

Java對象與數組的轉換:深入探討強制類型轉換的風險與正確方法很多Java初學者會遇到將一個對象轉換成數組的�...

電商平台SKU和SPU表設計詳解本文將探討電商平台中SKU和SPU的數據庫設計問題,特別是如何處理用戶自定義銷售屬...

在使用TKMyBatis進行數據庫查詢時,如何優雅地獲取實體類變量名以構建查詢條件,是一個常見的難題。本文將針...
