小小

          IT
          數(shù)據(jù)加載中……
          Java多態(tài)初體驗(yàn)

          Java多態(tài)初體驗(yàn)本文面向Java初學(xué)者,我們?cè)诮滩纳辖?jīng)常會(huì)看到Java是多態(tài)的,可是一般的教科書只停留在理論上,很少有實(shí)際操作。現(xiàn)在把多態(tài)個(gè)概念用代碼簡(jiǎn)單描述一下,由于本人水平有限,所以難免有不足之處。
              首先我們有這樣幾個(gè)類,電腦,個(gè)人電腦,筆記本電腦。

          java 代碼
          class Computer{   
                 
              public void turnOn(){   
              }   
          }  
          現(xiàn)在有了電腦這個(gè)類,那么個(gè)人PC,筆記本都是繼承他。

          java 代碼
          class PC extends Computer{   
              public void turnOn(){   
                  System.out.println("PC has turn on");   
              }   
          }   
            
          class NB extends Computer{   
              public void turnOn(){   
                  System.out.println("NB has turn on");   
              }   
          }  
          我們看到,每個(gè)類都有一個(gè) turnOn()方法,而在父類中這個(gè)方法是空的,子類中各自有不同的實(shí)現(xiàn),到這里可能還不太明顯。如果有另外一個(gè)方法,要接受這些類作為參數(shù),就像這樣

          java 代碼
          class Test{   
              public void go(Computer computer){   
                   computer.turnOn();   
              }   
          }  
          這個(gè)方法接收的是基類參數(shù),當(dāng)然我們是可以把子類傳遞給方法的,也應(yīng)該這么做。

          java 代碼
          go(new PC());   
          go(new NB());  
          這樣他就會(huì)去調(diào)用具體子類的turnOn()方法,所以這兩次調(diào)用的輸出是不一樣的.如果不用基類作為參數(shù),我們想調(diào)用每個(gè)子類的turnOn()方法,那么就要些兩個(gè)方法體一樣的go()而接收不同的參數(shù)的重載。

          java 代碼
          public void go(PC computer){      
                   computer.turnOn();      
              }     
            
          public void go(NB computer){      
                   computer.turnOn();      
              }    
          這樣些也是正確的,但是這樣會(huì)產(chǎn)生很多重復(fù)代碼,而且也不易維護(hù),當(dāng)然這只是多態(tài)中最基本的一個(gè)部分,Java多態(tài)機(jī)制還有很多特性,關(guān)于這些建議大家看看 java編程思想(think in java)這本書,里面講的很詳細(xì),這里只是很簡(jiǎn)單的描述了一下,還望個(gè)各位高手不要見笑。

          posted on 2008-09-20 05:20 小小it 閱讀(180) 評(píng)論(0)  編輯  收藏


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 察哈| 龙江县| 宜都市| 淮南市| 花垣县| 万年县| 历史| 同心县| 望江县| 和平县| 静海县| 永康市| 色达县| 兰坪| 福州市| 汝城县| 小金县| 尖扎县| 遂川县| 桑植县| 宜州市| 红河县| 仪陇县| 曲靖市| 祁门县| 甘德县| 五莲县| 枣强县| 武山县| 易门县| 长泰县| 布尔津县| 于田县| 日照市| 白玉县| 柯坪县| 遵化市| 祁门县| 南安市| 嘉荫县| 静安区|