Dict.CN 在線詞典, 英語學(xué)習(xí), 在線翻譯

          都市淘沙者

          荔枝FM Everyone can be host

          統(tǒng)計

          留言簿(23)

          積分與排名

          優(yōu)秀學(xué)習(xí)網(wǎng)站

          友情連接

          閱讀排行榜

          評論排行榜

          java類的初始化順序

          abstract class base
          {
              public int age=getNumber(100);
              static
              {
                  System.out.println("base static block");
              }
              {
                  System.out.println("base nonstatic block");
              }
              static int sage=getNumber(50);
              base()
              {
                  System.out.println(age);
                  System.out.println("base start");
                  draw();//會調(diào)用子類覆蓋后的方法
                  System.out.println("base end");
                  
              }
              static int getNumber(int base)
              {
                  System.out.println("base.getNumber int"+base);
                  return base;
              }
              public  void draw()
              {
                  System.out.println("base.draw");
              }
          }
          public class initializeOrder extends base{
              public int age=getNumber(1001);
              private int _radius=getNumber(10);
              static int sage=getNumber(250);
              static
              {
                  System.out.println("subclass static block");
              }
              {
                  System.out.println("subclass nonstatic block");
              }
              initializeOrder(int radius)
              {
                  _radius=radius;
                  System.out.println(age);
                  System.out.println("initializeOrder initialized");
              }
              public void draw()
              {
                  System.out.println("initializeOrder.draw "+_radius);
              }
              /** *//**
               * @param args
               */
              public static void main(String[] args) {
                  // TODO Auto-generated method stub
                  new initializeOrder(1000);
              }
          }
          運行結(jié)果:

          C:\java>java initializeOrder
          base static block
          base.getNumber int50
          base.getNumber int250
          subclass static block
          base.getNumber int100
          base nonstatic block
          100
          base start
          initializeOrder.draw 0
          base end
          base.getNumber int1001
          base.getNumber int10
          subclass nonstatic block
          1001
          initializeOrder initialized

          C:\java>

          總結(jié):
          1、類只有在使用New調(diào)用創(chuàng)建的時候才會被JAVA類裝載器裝入
          2、JAVA類首次裝入時,會對靜態(tài)成員變量或方法進(jìn)行一次初始化,但方法不被調(diào)用是不會執(zhí)行的,靜態(tài)成員變量和靜態(tài)初始化塊級別相同,非靜態(tài)成員變量和非靜態(tài)初始化塊級別相同。
          先初始化父類的靜態(tài)代碼--->初始化子類的靜態(tài)代碼-->
          初始化父類的非靜態(tài)代碼--->初始化父類構(gòu)造函數(shù)--->
          初始化子類非靜態(tài)代碼--->初始化子類構(gòu)造函數(shù)
          3、創(chuàng)建類實例時,首先按照父子繼承關(guān)系進(jìn)行初始化
          4、類實例創(chuàng)建時候,首先初始化塊部分先執(zhí)行,然后是構(gòu)造方法;然后從
          本類繼承的子類的初始化塊執(zhí)行,最后是子類的構(gòu)造方法
          5、類消除時候,首先消除子類部分,再消除父類部分

          posted on 2006-04-26 16:11 都市淘沙者 閱讀(321) 評論(1)  編輯  收藏 所屬分類: Java Basic/Lucene/開源資料

          評論

          # re: java類的初始化順序 2009-04-22 17:22 逸天

          1、類只有在使用New調(diào)用創(chuàng)建的時候才會被JAVA類裝載器裝入
          這句是錯的

            首次主動使用的情形:

            ·創(chuàng)建某個類的新實例時--new、反射、克隆或反序列化;

            ·調(diào)用某個類的靜態(tài)方法時;

            ·使用某個類或接口的靜態(tài)字段或?qū)υ撟侄钨x值時(final字段除外);

            ·調(diào)用Java的某些反射方法時

            ·初始化某個類的子類時

            ·在虛擬機啟動時某個含有main()方法的那個啟動類。

            回復(fù)  更多評論   

          主站蜘蛛池模板: 来凤县| 都昌县| 陕西省| 汪清县| 沁阳市| 任丘市| 屯留县| 同德县| 肇州县| 巩留县| 额尔古纳市| 外汇| 孟津县| 福贡县| 河东区| 承德市| 探索| 剑阁县| 广汉市| 鹤山市| 辉县市| 岱山县| 湖州市| 融水| 麻栗坡县| 公安县| 香港 | 临湘市| 偃师市| 临海市| 蒙自县| 洞头县| 育儿| 望江县| 蒙阴县| 凤庆县| 阿坝| 东台市| 新丰县| 自治县| 原平市|