Java中newDerivedClass()時背后發(fā)生的事情

字號:

Java中new DerivedClass()時背后發(fā)生的事情
    class DerivedClass extends BaseClass {…}
    new DerivedClass();
    1 裝載class
    1.1 載入BaseClass , 產(chǎn)生了此處說明的序列步驟(即: [裝載class])的遞歸.
    1.2 載入DerivedClass
    1.2.1 為類作用域變量分配存儲空間,并賦默認值
    1.2.2 調(diào)用,這包括:
    a).聲明類作用域變量并同時賦值的語句
    b).包含在 static {…} 中的賦值語句以及其他任何合法語句.
    c).要說明的是: 以上賦值語句的右值也可以是函數(shù)調(diào)用,那是合法的.
    2 為實例作用域變量分配存儲空間,并賦默認值.
    3 調(diào)用構(gòu)造函數(shù)
    ***注意: Java規(guī)定:構(gòu)造函數(shù)的第一個條語句必須是對super構(gòu)造函數(shù)的調(diào)用,如果代碼中不是這樣,會由編譯器自動為其偷偷加上.
    3.1調(diào)用super構(gòu)造函數(shù), 產(chǎn)生了此處說明的序列步驟(即: [調(diào)用構(gòu)造函數(shù)])的遞歸.
    3.2調(diào)用,這包括:
    a).聲明實例作用域變量并同時賦值的語句
    b).包含在 {…} 中的賦值語句以及其他任何合法語句.
    c).要說明的是: 以上賦值語句的右值也可以是函數(shù)調(diào)用,那是合法的.
    3.3執(zhí)行構(gòu)造函數(shù)中的剩余部分.