love fish大鵬一曰同風(fēng)起,扶搖直上九萬(wàn)里

          常用鏈接

          統(tǒng)計(jì)

          積分與排名

          friends

          link

          最新評(píng)論

          靜態(tài)分派,動(dòng)態(tài)分派,多分派,單分派 -------------- visitor模式準(zhǔn)備(轉(zhuǎn))

          一,靜態(tài)分派:
          1,定義:發(fā)生在編譯時(shí)期,分派根據(jù)靜態(tài)類型信息發(fā)生,重載就是靜態(tài)分派
          2,什么是靜態(tài)類型:變量被聲明時(shí)的類型是靜態(tài)類型
          ??????什么是動(dòng)態(tài)類型:變量所引用的對(duì)象的真實(shí)類型
          3,有兩個(gè)類,BlackCat ,WhiteCat都繼承自Cat
          如下調(diào)用
          class?Cat{}
          class?WhiteCat?extends?Cat{}
          class?BlackCat?extends?Cat{}
          public?class?Person?{
          ????
          public?void?feed(Cat?cat){
          ????????System.out.println(
          "feed?cat");
          ????}

          ????
          public?void?feed(WhiteCat?cat){
          ????????System.out.println(
          "feed?WhiteCat");
          ????}

          ????
          public?void?feed(BlackCat?cat){
          ????????System.out.println(
          "feed?BlackCat");
          ????}

          ????
          public?static?void?main(String[]?args)?{
          ????????Cat?wc?
          =?new?WhiteCat();
          ????????Cat?bc?
          =?new?BlackCat();
          ????????Person?p?
          =?new?Person();
          ????????p.feed(wc);
          ????????p.feed(bc);
          ????}


          }

          運(yùn)行結(jié)果是:
          feed cat
          feed cat
          這樣的結(jié)果是因?yàn)橹剌d是靜態(tài)分派,在編譯器執(zhí)行的,取決于變量的聲明類型,因?yàn)閣c ,bc都是Cat所以調(diào)用的都是feed(Cat cat)的函數(shù).
          二,動(dòng)態(tài)分派
          1,定義:發(fā)生在運(yùn)行期,動(dòng)態(tài)分派,動(dòng)態(tài)的置換掉某個(gè)方法。
          還是上邊類似的例子:
          class?Cat{
          ????
          public?void?eat(){
          ????????System.out.println(
          "cat?eat");
          ????}

          }

          public?class?BlackCat?extends?Cat{
          ????
          public?void?eat(){
          ????????System.out.println(
          "black?cat?eat");
          ????}

          ????
          public?static?void?main(String[]?args){
          ????????Cat?cat?
          =?new?BlackCat();
          ????????cat.eat();
          ????}

          }
          這個(gè)時(shí)候的結(jié)果是:
          black cat eat
          這樣的結(jié)果是因?yàn)樵趫?zhí)行期發(fā)生了向下轉(zhuǎn)型,就是動(dòng)態(tài)分派了。

          三,單分派:
          1,定義:根據(jù)一個(gè)宗量的類型進(jìn)行方法的選擇
          四,多分派:
          1,定義:根據(jù)多于一個(gè)宗量的類型對(duì)方法的選擇
          2,說(shuō)明:多分派其實(shí)是一系列的單分派組成的,區(qū)別的地方就是這些但分派不能分割。
          3,C++ ,Java都是動(dòng)態(tài)單分派,靜態(tài)多分派語(yǔ)言
          多分派的語(yǔ)言有:CLOS? Cecil

          最后的部分:

          看完本文,如果你對(duì)visitor模式有更多的興趣,想了解更多請(qǐng)看如下幾篇文章。
          1,靜態(tài)分派,動(dòng)態(tài)分派,多分派,單分派 --------------?? visitor模式準(zhǔn)備(本文)
          2,訪問差異類型的集合類 ------------------------?? visitor模式入門
          3,visitor模式理論及學(xué)術(shù)概念-------------------?? visitor模式進(jìn)一步
          4,重載overloading和覆寫overriding哪個(gè)更早執(zhí)行--?? visitor幫助篇
          雖然排列順序是1,2,3,4但是我個(gè)人建議的學(xué)習(xí)方式是2,1,3,4因?yàn)檫@個(gè)順序更方便一般人理解


          #?re: 靜態(tài)分派,動(dòng)態(tài)分派,多分派,單分派 -------------- visitor模式準(zhǔn)備 2006-12-20 13:59 mu!!

          單分派:定義:根據(jù)一個(gè)宗量的類型進(jìn)行方法的選擇
          多分派:定義:根據(jù)多于一個(gè)宗量的類型對(duì)方法的選擇

          宗量???

          對(duì)應(yīng)的英文翻譯是什么???回復(fù)??更多評(píng)論??

          #?re: 靜態(tài)分派,動(dòng)態(tài)分派,多分派,單分派 -------------- visitor模式準(zhǔn)備 2006-12-20 15:16 dreamstone

          宗量大概的意思是方法的參數(shù)或方法的調(diào)用者
          具體的英文確切翻譯不太清楚,下班后找找看
          這一詞的來(lái)源是<<Java與模式>>一書,有些其它的講模式的書也使用過。??回復(fù)??更多評(píng)論??

          #?re: 靜態(tài)分派,動(dòng)態(tài)分派,多分派,單分派 -------------- visitor模式準(zhǔn)備[未登錄] 2007-01-17 17:38 h

          樓主,要把概念分清楚,否則會(huì)誤導(dǎo)很人,本來(lái)是做好事成了誤人子第;
          多分派與多重分派是不一樣的概念,多分派是根據(jù)多與一個(gè)宗量的類型對(duì)方法進(jìn)行選擇,而多重分派是一系列單分派組成的分派過程,可以分解成多個(gè)單分派的,而多分派是不能分解成多個(gè)單分派的.??回復(fù)??更多評(píng)論??

          #?re: 靜態(tài)分派,動(dòng)態(tài)分派,多分派,單分派 -------------- visitor模式準(zhǔn)備[未登錄]2007-01-19 09:51 dreamstone

          1,根據(jù)多于一個(gè)宗量的類型對(duì)方法的選擇
          說(shuō)明:多分派其實(shí)是一系列的單分派組成的,區(qū)別的地方就是這些單分派不能分割。

          2,多分派與多重分派是不一樣的概念,多分派是根據(jù)多與一個(gè)宗量的類型對(duì)方法進(jìn)行選擇,而多重分派是一系列單分派組成的分派過程,可以分解成多個(gè)單分派的,而多分派是不能分解成多個(gè)單分派的

          1是我寫的,2是你寫的,沒看到有什么區(qū)別,
          都是根據(jù)多于一個(gè)宗量的類型對(duì)方法的選擇
          都是多分派是不能分解成多個(gè)單分派的

          你強(qiáng)調(diào)多重分派的概念,在我看來(lái)那是多次單分派,所以我并沒有提出多重分派的概念。

          謝謝你的熱心糾正錯(cuò)誤,不過麻煩把錯(cuò)誤明確對(duì)比出來(lái)。

          ??回復(fù)??更多評(píng)論??

          posted on 2007-02-26 09:38 liaojiyong 閱讀(388) 評(píng)論(0)  編輯  收藏 所屬分類: Java

          主站蜘蛛池模板: 保德县| 左权县| 腾冲县| 兰西县| 日土县| 古蔺县| 渭源县| 陈巴尔虎旗| 庐江县| 云阳县| 凌云县| 那曲县| 商南县| 马边| 读书| 大邑县| 宁河县| 西宁市| 梁河县| 京山县| 南京市| 扎囊县| 义马市| 普洱| 常宁市| 大田县| 英吉沙县| 乌兰县| 汶上县| 靖边县| 宿州市| 天全县| 疏勒县| 霍州市| 江永县| 永德县| 韩城市| 麟游县| 安多县| 湄潭县| 大埔县|