多態(tài)分為兩種:通用多態(tài)和特定多態(tài)。兩者的區(qū)別是前者對工作的類型不加限制何恶,允許對不同類型的值執(zhí)行相同的代碼咱揍;后者只對有限數(shù)量的類型有效镇饺,而且對不同類型的值可能要執(zhí)行不同的代碼。通用的多態(tài)又分為參數(shù)多態(tài)和包含多態(tài);特定的多態(tài)分為過載多態(tài)和強制多態(tài)。
參數(shù)多態(tài):采用參數(shù)化模板,通過給出不同的類型參數(shù)责循,使得一個結(jié)構(gòu)有多種類型。例如攀操,模板類院仿。
過載多態(tài):同一個名(操作符﹑函數(shù)名)在不同的上下文中有不同的類型。就是c++中的函數(shù)重載速和。
包含多態(tài):同樣的操作可用于一個類型及其子類型歹垫。包含多態(tài)一般需要進行運行時的類型檢查。例如颠放,虛函數(shù)覆蓋機制县钥。
強制多態(tài):編譯程序通過語義操作,把操作對象的類型強行加以變換慈迈,以符合函數(shù)或操作符的要求若贮。程序設(shè)計語言中基本類型的大多數(shù)操作符省有,在發(fā)生不同類型的數(shù)據(jù)進行混合運算時,編譯程序一般都會進行強制多態(tài)谴麦。