Java 非靜態初始化的例子
在繼承關系中,靜態初始化、非靜態初始化和構造函數的執行順序
public class ExA { static { System.out.println('父類--靜態代碼塊'); } public ExA() { System.out.println('父類--構造函數'); } { //非靜態代碼塊 System.out.println('父類--非靜態代碼塊'); } public static void main(String[] args) { new ExB(); }} class ExB extends ExA { static { System.out.println('子類--靜態代碼塊'); } { //非靜態代碼塊 System.out.println('子類--非靜態代碼塊'); } public ExB() { System.out.println('子類--構造函數'); }}
執行結果:
父類--靜態代碼塊子類--靜態代碼塊父類--非靜態代碼塊父類--構造函數子類--非靜態代碼塊子類--構造函數
從上邊的例子我們可以得出非靜態代碼塊的初始化順序是在靜態代碼塊的初始化之后。下邊我們再來看另一個例子:
class Mug{ public Mug(int marker) { System.out.println('Mug('+marker+')'); } void f(int marker){ System.out.println('f('+marker+')'); }}public class Mugs { Mug mug1; Mug mug2; { //非靜態代碼塊 mug1 = new Mug(1); mug2 = new Mug(2); System.out.println('mug1 & mug2 initialized'); } Mugs(){ System.out.println('Mugs()'); } Mugs(int i){ System.out.println('Mugs(int i)'); } public static void main(String[] args) { System.out.println('Inside main()'); //首先執行Mugs類中非靜態代碼塊,創建兩個對象。然后執行無參構造函數 new Mugs(); System.out.println('new Mugs() completed'); //再執行Mugs類中非靜態代碼塊,這也是和靜態代碼塊只初始化一次的不同之后,其次調用有參構造函數 new Mugs(1); System.out.println('new Mugs(1) completed'); } }
以上就是Java 非靜態初始化的例子的詳細內容,更多關于Java 非靜態初始化的資料請關注好吧啦網其它相關文章!
相關文章:
1. 詳解Android studio 動態fragment的用法2. 基于android studio的layout的xml文件的創建方式3. 編程語言PHP在Web開發領域的優勢在哪?4. 解決Android studio xml界面無法預覽問題5. 什么是python的自省6. Spring Boot和Thymeleaf整合結合JPA實現分頁效果(實例代碼)7. 圖文詳解vue中proto文件的函數調用8. Android如何加載Base64編碼格式圖片9. Springboot Druid 自定義加密數據庫密碼的幾種方案10. Vue封裝一個TodoList的案例與瀏覽器本地緩存的應用實現

網公網安備