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 閱讀(453) 評論(0)  編輯  收藏 所屬分類: Jave SE 6

          主站蜘蛛池模板: 六安市| 左贡县| 平武县| 莎车县| 开封市| 融水| 江山市| 德阳市| 南投县| 宁阳县| 九龙坡区| 介休市| 双城市| 即墨市| 长春市| 寿阳县| 余江县| 辽宁省| 宕昌县| 钦州市| 河南省| 焉耆| 宝山区| 闻喜县| 大邑县| 清流县| 南投县| 青州市| 晋宁县| 临武县| 贵南县| 静安区| 龙门县| 会宁县| 南陵县| 青阳县| 荥阳市| 新密市| 鲁山县| 临澧县| 鄢陵县|