無線&移動互聯網技術研發

          換位思考·····
          posts - 19, comments - 53, trackbacks - 0, articles - 283
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          多態總結

          Posted on 2009-08-23 22:42 Gavin.lee 閱讀(244) 評論(0)  編輯  收藏 所屬分類: java SE & EE
          多態性是指“多種形式”
          它使用不同的實例而執行不同操作
          多態包括靜態多態性和動態多態性

          1).靜態多態性---編譯時多態
          即用相同的方法名定義不同的方法內容。編譯時根據它們的特征來進行編譯. 即:方法重載

          2).動態多態性---運行時多態
          一種在運行時調用重寫方法的機制。子類對象可以作為父類對象使用,這是因為子類通過繼承具備了父類的所有屬性。在程序中凡是可以使用父類對象的地方,都有可以用子類對象來代替。

          Java提供了 instanceof 運算符,來判斷一個對象屬于哪個類的實例。

          (重載是根據需要重寫一個方法或在其中加功能     
          多態是根據需要傳入不同參數構建不同的實例)

          重寫:動態多態性---運行時多態
          package com.yixun.wap;

          class Father {
              
          protected void showInfo() {
                  System.out.println(
          "Father");
              }

          }


          class Son extends Father {
              
          protected void showInfo() {
                  System.out.println(
          "Son");
              }


              
          protected void showSex() {
                  System.out.println(
          "");
              }

          }


          class Daughter extends Father {
              
          protected void showInfo() {
                  System.out.println(
          "Daughter");
              }


              
          protected void showSex() {
                  System.out.println(
          "");
              }

          }

          /**
           * ******************************************
           * @descripte 運行時多態,動態多態性
           * 父類引用指向子類對象,實際對象為子類
           * java的這種機制遵循一個原則:當超類對象引用變量引用子類對象時, 
           * 是被引用對象的類型而不是引用變量的類型決定了調用誰的成員方法, 
           * 但是這個被調用的方法必須是在超類中定義過的,也就是說被子類覆蓋的方法。
           * 
          @author Gavin.lee
           * @date 2009-8-24下午05:21:49
           * 
          @version 1.0
           *
           ********************************************
           
          */

          public class TestSon {
              
          public static void main(String args[]) {
                  Father fa;
                  
                  fa 
          = new Son();     //向上轉型,父類引用指向子類對象
                  fa.showInfo();
                  
          //        fa.showSex();    //無法調用,父類無此方法        
                  Son son = (Son)fa;    //向下轉型
                  son.showSex();

                  fa 
          = new Daughter();        
                  fa.showInfo();
              }

          }

          /**
           *    Son
           *    男
           *    Daughter
           *同一個引用調用了相同名稱的方法,結果卻不一樣---多態的體現
           
          */

          主站蜘蛛池模板: 兰溪市| 金溪县| 宜兰市| 鄢陵县| 休宁县| 额尔古纳市| 台前县| 南溪县| 阳原县| 民乐县| 通山县| 台中市| 德惠市| 榆树市| 明光市| 大田县| 商丘市| 泸西县| 霸州市| 察哈| 隆德县| 巴里| 武邑县| 尚义县| 横山县| 武夷山市| 松阳县| 海安县| 宽甸| 赤壁市| 甘南县| 饶阳县| 广水市| 湾仔区| 开封市| 仲巴县| 临汾市| 亚东县| 普洱| 浮山县| 克什克腾旗|