摘要:初始化順序有無父類有將父類加載進內存。如果有初始化子類對象。初始化完畢之后,再執行構造器內的方法。初始化完父類后,依次初始化子類的。
初始化順序:
1.有無父類?
有:
將父類加載進內存。直到將所有的父類加載完畢。再從頂層父類按照代碼的順序執行靜態代碼,執行完最頂層的,在執行下一層的,依次類推,直到執行完所有的靜態代碼。
(1)如果有初始化子類對象。那么同樣會先調用父類的構造器,并且會先執行最底層父類的構造器。
先將所有成員屬性設置成為默認值,接著依據代碼的順序初始化所有成員。初始化完畢之后,再執行構造器內的方法。初始化完父類后,依次初始化子類的。
無:
那么接下來的步驟跟(1)處的處理方式是一樣的。
下面給出例子:
package org.csp.test; public class Test extends Insect{ private int k = printInit("Test initialized"); ----(11),類似的要先被清0,然后再調用printInit()方法 public Test() { System.out.println("k ="+k); ---(12) 初始化屬性后,執行構造器內的代碼 System.out.println("j ="+j); ----(13) } private static int x2 = printInit("Test X2 initialized"); ---(3)因為是靜態成員 public static void main(String[] args) { System.out.println("haha"); ---(4) Test t = new Test(); ---(5)創建對象,接下去要初始化成員對象,但是要先初始化父類的 } } class Insect { ------(7)先將所有的成員設置為默認值 private int i =9 ; -----(7)先被設置為默認值0 -----(8) 按照代碼順序初始屬性 protected int j; -----(7)被設置為默認值0 static{ System.out.println("hahaaaa"); } **----(1)最先執行** Insect() { System.out.println("i = "+i+",j = "+j); ----(9) 執行構造器內的代碼 j=39; ------(10)此處已經將父類初始化完畢,返回去初始子類對象 } private static int x1= printInit("static Insect.X1 initialized"); ----(2) static int printInit(String s) { System.out.println(s); return 47; } }
執行結果
hahaaaa static Insect.X1 initialized Test X2 initialized haha i = 9,j = 0 Test initialized k =47 j =39
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/66354.html
摘要:在面向對象的程序設計語言中,多態是繼數據抽象和繼承之后的第三種基本特征。 在面向對象的程序設計語言中,多態是繼數據抽象和繼承之后的第三種基本特征。 1.再論向上轉型 多態作用:消除類型之間的耦合關系. 2.轉機 綁定:將一個方法調用同一個方法主體關聯起來. 前期綁定:在程序執行前就進行綁定(面向過程語言默認綁定方式). 后期綁定:也叫動態綁定或運行時綁定,在運行時根據對象的類型進行綁...
摘要:也就是說,一個實例變量,在的對象初始化過程中,最多可以被初始化次。當所有必要的類都已經裝載結束,開始執行方法體,并用創建對象。對子類成員數據按照它們聲明的順序初始化,執行子類構造函數的其余部分。 類的拷貝和構造 C++是默認具有拷貝語義的,對于沒有拷貝運算符和拷貝構造函數的類,可以直接進行二進制拷貝,但是Java并不天生支持深拷貝,它的拷貝只是拷貝在堆上的地址,不同的變量引用的是堆上的...
摘要:對子類成員數據按照它們聲明的順序初始化,執行子類構造函數的其余部分。參考類的初始化順序引了大半類加載的時機 jvm系列 垃圾回收基礎 JVM的編譯策略 GC的三大基礎算法 GC的三大高級算法 GC策略的評價指標 JVM信息查看 GC通用日志解讀 jvm的card table數據結構 Java類初始化順序 Java對象結構及大小計算 Java的類加載機制 Java對象分配簡要流程 年老...
摘要:先說結論對于具有繼承關系的類,它們的類和對象構造順序為父類的類構造器子類的類構造器父類成員變量的賦值和實例代碼塊父類的構造函數子類成員變量的賦值和實例代碼塊子類的構造函數。類實例塊是放在該類構造函數最前面和父類構造函數之后執行的。 先說結論對于具有繼承關系的類,它們的類和對象構造順序為:父類的類構造器() -> 子類的類構造器() -> 父類成員變量的賦值和實例代碼塊 -> 父類的構造...
摘要:拆箱將包裝類型轉換為基本類型的過程。否則會拋出異常。默認采用單鏈表解決沖突,如果鏈表長度超過,將單鏈表轉換為紅黑樹。內部使用紅黑樹實現,存儲映射。紅黑樹減弱了對平衡的要求,降低了保持樹平衡需要的開銷,在實際應用中,統計性能超過平衡二叉樹。 引言 showImg(https://segmentfault.com/img/bVbv7Mr?w=242&h=410); 在學習《Java編程的邏...
閱讀 1780·2023-04-26 01:41
閱讀 3081·2021-11-23 09:51
閱讀 2744·2021-10-09 09:43
閱讀 9054·2021-09-22 15:13
閱讀 2460·2021-09-07 09:59
閱讀 2632·2019-08-30 15:44
閱讀 1138·2019-08-30 12:45
閱讀 2624·2019-08-30 12:43