小小

          IT
          數據加載中……
          Java多態(tài)初體驗

          Java多態(tài)初體驗本文面向Java初學者,我們在教材上經常會看到Java是多態(tài)的,可是一般的教科書只停留在理論上,很少有實際操作。現在把多態(tài)個概念用代碼簡單描述一下,由于本人水平有限,所以難免有不足之處。
              首先我們有這樣幾個類,電腦,個人電腦,筆記本電腦。

          java 代碼
          class Computer{   
                 
              public void turnOn(){   
              }   
          }  
          現在有了電腦這個類,那么個人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");   
              }   
          }  
          我們看到,每個類都有一個 turnOn()方法,而在父類中這個方法是空的,子類中各自有不同的實現,到這里可能還不太明顯。如果有另外一個方法,要接受這些類作為參數,就像這樣

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

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

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

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


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


          網站導航:
           
          主站蜘蛛池模板: 高邑县| 上高县| 鹿泉市| 剑阁县| 泰宁县| 赤城县| 阳城县| 临桂县| 龙里县| 隆尧县| 公安县| 云龙县| 神木县| 紫阳县| 元阳县| 大邑县| 蒲城县| 上思县| 上高县| 兴安盟| 镇安县| 仁化县| 荣成市| 张家港市| 湖北省| 达日县| 封开县| 明水县| 阿瓦提县| 乌什县| 湖北省| 固原市| 汾西县| 资溪县| 图木舒克市| 南涧| 南投县| 太和县| 定安县| 宜川县| 岳普湖县|