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

          換位思考·····
          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
           *同一個引用調用了相同名稱的方法,結果卻不一樣---多態的體現
           
          */

          主站蜘蛛池模板: 新蔡县| 浦东新区| 芦溪县| 兴和县| 沙洋县| 安顺市| 福清市| 怀来县| 桐梓县| 大余县| 平乡县| 九龙坡区| 诏安县| 广灵县| 千阳县| 垫江县| 台北县| 古丈县| 江达县| 南乐县| 新津县| 阳东县| 北流市| 探索| 呼伦贝尔市| 施甸县| 裕民县| SHOW| 北海市| 玉溪市| 宜都市| 安仁县| 获嘉县| 抚州市| 思茅市| 惠安县| 阳曲县| 旺苍县| 榆树市| 博罗县| 乳源|