學海拾遺

          生活、技術、思想無處不在學習
          posts - 52, comments - 23, trackbacks - 0, articles - 3
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          一個Java問題貼子

          Posted on 2007-04-13 09:08 tanzek 閱讀(288) 評論(1)  編輯  收藏 所屬分類: 技術學習
          [問題引出]:

          public class Parent
          {
           public void test()
           {}
           
           public Parent()
           {
            test();
           }

           public static void main(String [] args)
           {
            new Child();
           }
          }

          class Child extends Parent
          {
           private int instanceValue = 20;
           public void test()
           {
               System.out.println("instance value is: " + instanceValue);
           }
          }

          執(zhí)行Parent的main結果是什么,并說出理由

          [回復]:
          我試著分析下哦:

          很顯然,程序是從Main開始執(zhí)行的,不過執(zhí)行之前肯定是裝載了Parent類的.
          當執(zhí)行new Child();語句時,肯定也會去裝載Child類(記住,這是只是裝載,裝載的同時會完成類的靜態(tài)成員的初始化工作).這里是請求創(chuàng)建Child的實例,因為Child是Parent的子類,那么肯定是要去先去創(chuàng)建Parent的一個實例的,那么在這個過程中,就會執(zhí)行了Child的覆蓋方法test(),這時,子類中的instanceValue還沒有被賦值.因為這時候還沒有進行Child的實例創(chuàng)建.
          看一下我加入一些狀態(tài)的程序和執(zhí)行結果哦.
          程序清單:
          public class Parent
          {
          public void test() {
          System.out.println("In Parent Class.");
          }

          public Parent() {
          System.out.println("In Parent Constructor");
          test();
          }

          public static void main(String [] args) {
          System.out.println("In Main Function.");
          new Child();
          }
          }

          class Child extends Parent {
          private int instanceValue = 20;

          public void test() {
          System.out.println("In Child Class.");
          System.out.println("instance value is: " + this.instanceValue);
          }

          public Child() {
          System.out.println("In Child Constructor.");
          }
          }
          執(zhí)行結果(主要是看執(zhí)行順序哦):
          In Main Function.
          In Parent Constructor
          In Child Class.
          instance value is: 0
          In Child Constructor.

          嘿嘿,應該懂了吧!~ 你可以試著把instanceValue的修飾符改為static試試哦.


          評論

          # 福娃免費空間  回復  更多評論   

          2009-02-28 22:12 by sad
          福娃免費空間http://h.8wa.com
          主站蜘蛛池模板: 舒兰市| 乌鲁木齐县| 浦县| 大理市| 凤山县| 大埔区| 沧州市| 西平县| 陆川县| 大新县| 吴川市| 县级市| 揭西县| 株洲市| 阆中市| 三门峡市| 安平县| 西充县| 宁河县| 通渭县| 兖州市| 新营市| 竹山县| 云林县| 榆树市| 古田县| 平乡县| 桦甸市| 广东省| 高要市| 陇南市| 满洲里市| 桂阳县| 固始县| 余庆县| 阳山县| 涡阳县| 祁阳县| 孙吴县| 朝阳市| 台南市|