子類(lèi)的構(gòu)造方法中必須調(diào)用其基類(lèi)的構(gòu)造方法,。 子類(lèi)可以在自己的構(gòu)造方法中使用super(argument_list)調(diào)用基類(lèi)的構(gòu)造方法。 使用this(arguement_list)調(diào)用本類(lèi)的其他構(gòu)造方法,。 如果使用super()調(diào)用基類(lèi)的構(gòu)造方法必須寫(xiě)在子類(lèi)構(gòu)造方法的第一行,。 如果子類(lèi)的構(gòu)造方法中沒(méi)有顯示的調(diào)用基類(lèi)的構(gòu)造方法,那么系統(tǒng)自動(dòng)調(diào)用基類(lèi)中沒(méi)有參數(shù)的構(gòu)造方法,。 如果子類(lèi)的構(gòu)造方法中既沒(méi)有顯示的調(diào)用基類(lèi)的構(gòu)造方法,,而且基類(lèi)中也沒(méi)有無(wú)參數(shù)的構(gòu)造方法,則編譯出錯(cuò),。 class A { 分析程序輸出結(jié)果,,首先new出一個(gè)新對(duì)象b,即調(diào)用B的構(gòu)造方法,。由于B 是繼承A類(lèi)的,,所以B必須繼承A的構(gòu)造方法,在B的構(gòu)造方法中沒(méi)有使用super(argument_list)調(diào)用A的構(gòu)造方法,,所以系統(tǒng)默認(rèn)B 調(diào)用A中沒(méi)有參數(shù)的構(gòu)造方法,,隨即輸出A()。接下來(lái)順序執(zhí)行B的構(gòu)造方法,,輸出B(),。最后程序調(diào)用b.f(),在B中f()是重寫(xiě)A中的f(),即將A中的f()覆蓋,,所以輸出B:f(),。 綜上,輸出結(jié)果為:A()
|
|