中文JAVA技術平等自由協作創造

          Java專題文章博客和開源

          常用鏈接

          統計

          最新評論

          java對象初始化順序的簡單驗證

            以下這段小程序對調用對象構造函數時,父類構造函數、成員變量初始化函數,以及非靜態初始化塊調用順序進行驗證,不考慮靜態成員及靜態初始化塊。

            public class Derive extends Base

            {

            private Member m1 = new Member("Member 1");

            {

            System.out.println("Initial Block()");

            }

            public Derive() {

            System.out.println("Derive()");

            }

            private Member m2 = new Member("Member 2");

            private int i = getInt();

            private int getInt()

            {

            System.out.println("getInt()");

            return 2;

            }

            public static void main(String[] args)

            {

            new Derive();

            }

            }

            class Base

            {

            public Base()

            {

            System.out.println("Base()");

            }

            }

            class Member

            {

            public Member(String m)

            {

            System.out.println("Member() "+m);

            }

            }

            /*程序輸出:

            Base()

            Member() Member 1

            Initial Block()

            Member() Member 2

            getInt()

            Derive()

            */ www.qcwyo68.com

            得出結論如下:不考慮靜態成員的初始化,調用一個對象的構造函數時,程序先調用父類的構造函數(可以通過super關鍵字指定父類的構造函數,否則默認調用無參的構造函數,并且需要在子類的構造函數的第一行調用),之后靜態成員變量的初始化函數和靜態初始化塊則按照在代碼當中的順序執行,成員變量如果沒有指定值的話則賦予默認值,即基本數據類型為0或false等,對象則為null;最后調用自身構造函數。 www.lefeng123.com 
           

          posted on 2014-02-14 23:55 好不容易 閱讀(128) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           
          PK10開獎 PK10開獎
          主站蜘蛛池模板: 栾城县| 枣庄市| 外汇| 丰城市| 得荣县| 永泰县| 定结县| 金华市| 松潘县| 西城区| 泰顺县| 勐海县| 桓仁| 扎鲁特旗| 巴楚县| 曲松县| 溆浦县| 宣恩县| 佛山市| 龙泉市| 南通市| 阿克苏市| 徐汇区| 板桥市| 乐至县| 余江县| 乾安县| 沙湾县| 夏津县| 东海县| 景洪市| 新民市| 罗江县| 黎城县| 绩溪县| 宣威市| 焉耆| 新巴尔虎左旗| 丰顺县| 旺苍县| 吉隆县|