參考資料《Java 編程思想》,關(guān)于含有基類的導(dǎo)出類,其成員的初始化過程是一個(gè)容易讓人困惑的地方,下面通過具體的實(shí)例進(jìn)行講解,代碼取自《Java 編程思想》,代碼如下:
成都創(chuàng)新互聯(lián)專注于企業(yè)營(yíng)銷型網(wǎng)站建設(shè)、網(wǎng)站重做改版、東河網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5高端網(wǎng)站建設(shè)、商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為東河等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
import static net.mindview.util.Print.*; /** * All rights Reserved, Designed By www.tydic.com * * @project: MyExerciseProject * @Title: Beetle.java * @Package: * @Description: TODO(Learn java) * @Author: Yang Xiaoyong * @Date: 2017年10月30日 下午4:22:19 * @Version: V1.0 * @Copyright: 2017 Inc. All rights reserved. 注意:本內(nèi)容僅限于學(xué)習(xí)交流使用,禁止外泄以及用于其他的商業(yè)目的 */ public class Beetle extends Insect { private int k = printInit("Beetle.k Initialized"); Beetle() { // TODO Auto-generated constructor stub print("k = " + k); print("j = " + j); } private static int x2 = printInit("static Beetle.x2 initialized"); public static void main(String[] args) { print("Beetle constructor"); Beetle beetle = new Beetle(); } } class Insect { private int i = 9; protected int j; Insect() { // TODO Auto-generated constructor stub print("i = " + i + ". j = " + j); j = 39; } private static int x1 = printInit("static Insert.x1 initialized"); static int printInit(String s) { print(s); return 47; } }
程序輸出結(jié)果為:
則UML類圖為:
則Beetle
是導(dǎo)出類,Insect
是基類,當(dāng)程序試圖從main()函數(shù)入口點(diǎn)進(jìn)入,下面是運(yùn)行過程:
至此,完成類的加載過程。然后,可以進(jìn)行對(duì)象的創(chuàng)建。
對(duì)程序輸出結(jié)果進(jìn)行分析:因?yàn)殪o態(tài)成員變量在類加載的時(shí)候進(jìn)行初始化,而在運(yùn)行main()
函數(shù)之前,完成加載類的過程。所以在執(zhí)行main()函數(shù)之前,x1, x2已經(jīng)完成初始化過程,注意此時(shí)初始化過程是一個(gè)從基類“向外”擴(kuò)散的,類似導(dǎo)出類的構(gòu)造器的構(gòu)建過程。輸出如下:
static Insert.x1 initialized
static Beetle.x2 initialized
之后,在創(chuàng)建Beetle
的過程中,其基類的構(gòu)造器會(huì)被自動(dòng)調(diào)用,所以首先執(zhí)行Inspect構(gòu)造器里面的內(nèi)容,完成print()
函數(shù),并對(duì)j的變量賦值。最后,調(diào)用Beetle類自身的構(gòu)造器進(jìn)行對(duì)象的創(chuàng)建,最終輸出符合分析。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)創(chuàng)新互聯(lián)的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接