天天看點

Java多态初體驗

java多态初體驗本文面向java初學者,我們在教材上經常會看到java是多态的,可是一般的教科書隻停留在理論上,很少有實際操作。現在把多态個概念用代碼簡單描述一下,由于本人水準有限,是以難免有不足之處。 

    首先我們有這樣幾個類,電腦,個人電腦,筆記本電腦。

java 代碼

class computer{    

    public void turnon(){    

    }    

}   

現在有了電腦這個類,那麼個人pc,筆記本都是繼承他。

class pc extends computer{    

        system.out.println("pc has turn on");    

}    

class nb extends computer{    

        system.out.println("nb has turn on");    

我們看到,每個類都有一個 turnon()方法,而在父類中這個方法是空的,子類中各自有不同的實作,到這裡可能還不太明顯。如果有另外一個方法,要接受這些類作為參數,就像這樣

class test{    

    public void go(computer computer){    

         computer.turnon();    

這個方法接收的是基類參數,當然我們是可以把子類傳遞給方法的,也應該這麼做。

go(new pc());    

go(new nb());   

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

public void go(pc computer){       

         computer.turnon();       

    }      

public void go(nb computer){       

    }     

這樣些也是正确的,但是這樣會産生很多重複代碼,而且也不易維護,當然這隻是多态中最基本的一個部分,java多态機制還有很多特性,關于這些建議大家看看 java程式設計思想(think in java)這本書,裡面講的很詳細,這裡隻是很簡單的描述了一下,還望個各位高手不要見笑。

本文出自seven的測試人生公衆号最新内容請見作者的github頁:http://qaseven.github.io/