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

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

          多態總結

          Posted on 2009-08-23 22:42 Gavin.lee 閱讀(248) 評論(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
           *同一個引用調用了相同名稱的方法,結果卻不一樣---多態的體現
           
          */

          主站蜘蛛池模板: 普安县| 苗栗县| 安阳市| 武平县| 栾川县| 长葛市| 社旗县| 临沭县| 巴中市| 柯坪县| 盈江县| 萨嘎县| 永济市| 习水县| 宁远县| 文成县| 吴旗县| 黄山市| 巫溪县| 连城县| 海口市| 连山| 南陵县| 博野县| 高青县| 和平县| 大兴区| 稷山县| 阿拉尔市| 江都市| 涟水县| 习水县| 上栗县| 平顺县| 武安市| 新营市| 轮台县| 岳阳市| 梨树县| 陕西省| 永泰县|