Scott@JAVA

          Java, 一杯濃濃的咖啡伴你到深夜

          運行時多態

          ?

          class ?A? {
          ????
          int ?i? = ? 1 ;

          ????
          char ?f()? {
          ????????
          return ? ' A ' ;
          ????}


          ????
          static ? char ?g()? {
          ????????
          return ? ' A ' ;
          ????}

          }


          class ?B? extends ?A? {
          ????
          int ?i? = ? 2 ;??????????????????? // 變量重名

          ????
          char ?f()? {??????????????????? // 方法重寫
          ???????? return ? ' B ' ;
          ????}


          ????
          static ? char ?g()? {??????????? // 這種重寫不具有多態性。多態性指實例方法
          ???????? return ? ' B ' ;
          ????}

          }


          public ? class ?Test? {
          ????
          public ? static ? void ?main(String[]?args)? {
          ????????B?b?
          = ? new ?B();
          ????????System.out.println(b.i);
          ????????System.out.println(b.f());
          ????????System.out.println(b.g());
          ????????System.out.println(B.g());
          ????????A?a?
          = ?b;?????????????????? // 子類對象當作父類對象使用
          ????????System.out.println(a.i);
          ????????System.out.println(a.f());
          ????????System.out.println(a.g());
          ????????System.out.println(A.g());
          ????}

          }



          程序運行結果:
          2
          B
          B
          B
          1
          B
          A
          A

          程序分析:在該示例程序中,變量i產生數據成員變量隱藏;實例方法f()是方法重寫,對實例方法的重寫會產生運行時多態性。static方法g()也是方法重寫,但這種方法重寫不具有運行時多態的特征,多態特征是針對實例方法而言。因此當子類對象作為父類對象使用時,在輸出結果中看到,只有f()發生了運行時多態。

          posted on 2007-01-23 11:20 Scott@JAVA 閱讀(454) 評論(0)  編輯  收藏 所屬分類: Jave SE 6

          主站蜘蛛池模板: 巫山县| 梨树县| 惠东县| 确山县| 额尔古纳市| 宜昌市| 南漳县| 商水县| 攀枝花市| 调兵山市| 阳谷县| 剑河县| 册亨县| 通海县| 陆川县| 潮州市| 晋江市| 桓台县| 乐安县| 武隆县| 广饶县| 彭泽县| 昔阳县| 汉沽区| 日土县| 全椒县| 宿州市| 泸州市| 海盐县| 阜阳市| 皮山县| 石阡县| 平顺县| 梁河县| 博野县| 杭锦旗| 松溪县| 临邑县| 合川市| 邻水| 长沙县|