posts - 19, comments - 53, trackbacks - 0, articles - 283
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          多態(tài)總結(jié)

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

          1).靜態(tài)多態(tài)性---編譯時(shí)多態(tài)
          即用相同的方法名定義不同的方法內(nèi)容。編譯時(shí)根據(jù)它們的特征來(lái)進(jìn)行編譯. 即:方法重載

          2).動(dòng)態(tài)多態(tài)性---運(yùn)行時(shí)多態(tài)
          一種在運(yùn)行時(shí)調(diào)用重寫(xiě)方法的機(jī)制。子類(lèi)對(duì)象可以作為父類(lèi)對(duì)象使用,這是因?yàn)樽宇?lèi)通過(guò)繼承具備了父類(lèi)的所有屬性。在程序中凡是可以使用父類(lèi)對(duì)象的地方,都有可以用子類(lèi)對(duì)象來(lái)代替。

          Java提供了 instanceof 運(yùn)算符,來(lái)判斷一個(gè)對(duì)象屬于哪個(gè)類(lèi)的實(shí)例。

          (重載是根據(jù)需要重寫(xiě)一個(gè)方法或在其中加功能     
          多態(tài)是根據(jù)需要傳入不同參數(shù)構(gòu)建不同的實(shí)例)

          重寫(xiě):動(dòng)態(tài)多態(tài)性---運(yùn)行時(shí)多態(tài)
          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 運(yùn)行時(shí)多態(tài),動(dòng)態(tài)多態(tài)性
           * 父類(lèi)引用指向子類(lèi)對(duì)象,實(shí)際對(duì)象為子類(lèi)
           * java的這種機(jī)制遵循一個(gè)原則:當(dāng)超類(lèi)對(duì)象引用變量引用子類(lèi)對(duì)象時(shí), 
           * 是被引用對(duì)象的類(lèi)型而不是引用變量的類(lèi)型決定了調(diào)用誰(shuí)的成員方法, 
           * 但是這個(gè)被調(diào)用的方法必須是在超類(lèi)中定義過(guò)的,也就是說(shuō)被子類(lèi)覆蓋的方法。
           * 
          @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();     //向上轉(zhuǎn)型,父類(lèi)引用指向子類(lèi)對(duì)象
                  fa.showInfo();
                  
          //        fa.showSex();    //無(wú)法調(diào)用,父類(lèi)無(wú)此方法        
                  Son son = (Son)fa;    //向下轉(zhuǎn)型
                  son.showSex();

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

          }

          /**
           *    Son
           *    男
           *    Daughter
           *同一個(gè)引用調(diào)用了相同名稱(chēng)的方法,結(jié)果卻不一樣---多態(tài)的體現(xiàn)
           
          */

          主站蜘蛛池模板: 镇宁| 梨树县| 凉山| 朝阳市| 华亭县| 祁东县| 冷水江市| 南皮县| 承德县| 临桂县| 荃湾区| 泊头市| 扎兰屯市| 古田县| 永康市| 绵阳市| 布拖县| 遂平县| 武夷山市| 罗源县| 娱乐| 巴彦县| 吴忠市| 昂仁县| 新余市| 松桃| 芒康县| 大渡口区| 洛宁县| 西华县| 河北省| 江津市| 延寿县| 南宁市| 石景山区| 嘉善县| 涪陵区| 阿克苏市| 井冈山市| 饶平县| 盐边县|