多態性是合一個對象被看成成另一個對象的技術,比如,有一個綿羊牧場,里面有4只綿羊(綿羊屬),但是剛剛買了兩只山羊(山羊屬)和一只德國牧羊犬,一共有多少動物?把所有的綿羊,山羊和狗加起來,結果是7只.這剛好應用了多態性,既為了計算,把3種不同種類的動物當成一種通用的類型("動物")來對待.如果把綿羊,山羊和狗當成哺乳動物來看待,這就是一個簡單的信息飛躍.生物學家每天都以這種方式使用多態性,而程序員則以從其它科學領域"竊用"好主意聞名.映射到程序中,可以使用一個對象來完成不同環境下的功能操作.
簡單地講,多態是指OOP能夠根據使用類的上下文來重新定義或改變類的性質或行為.多態是對象的一種能力,它可以在運行時根據傳遞的對象參數,決定調用哪一個對象的方法,例如,如果有一個figure的類,它定義了一個draw的方法,并且派生了circle和rectangle類.在派生類中覆蓋draw方法,可能還有一個函數,它希望使用一個參數x.并且可以調用$x->draw().如果有多態性,調用哪個draw方法就依賴于傳遞給這個函數的對象類型.