c++教程 什么是多態(tài)?java中如何實(shí)現(xiàn)多態(tài)?
多態(tài)性分為編譯時(shí)多態(tài)性和運(yùn)行時(shí)多態(tài)性。1. 編譯時(shí)多態(tài)性,其實(shí)是方法重載,函數(shù)名相同,但簽名不一樣。值得注意的是,簽名不包括方法的返回值。換句話說(shuō),這兩個(gè)方法的函數(shù)名和輸入?yún)?shù)是相同的,但返回值不同。
多態(tài)性分為編譯時(shí)多態(tài)性和運(yùn)行時(shí)多態(tài)性。
1. 編譯時(shí)多態(tài)性,其實(shí)是方法重載,函數(shù)名相同,但簽名不一樣。值得注意的是,簽名不包括方法的返回值。換句話說(shuō),這兩個(gè)方法的函數(shù)名和輸入?yún)?shù)是相同的,但返回值不同。編譯器返回錯(cuò)誤。
2. 運(yùn)行時(shí)多態(tài)性實(shí)際上與繼承和接口實(shí)現(xiàn)有關(guān)。子類可以重寫父類的非最終、非靜態(tài)、非私有方法或?qū)崿F(xiàn)接口方法。JVM如何知道要調(diào)用哪個(gè)子類實(shí)例的對(duì)應(yīng)方法?這就是你問(wèn)的問(wèn)題。在Java中,對(duì)象在JVM中有描述元數(shù)據(jù)。對(duì)象頭存儲(chǔ)當(dāng)前實(shí)例的類型信息。在調(diào)用時(shí),JVM可以根據(jù)這個(gè)類型準(zhǔn)確地找出要使用的子類方法。
什么是多態(tài)?java中如何實(shí)現(xiàn)多態(tài)?
新人想學(xué)編程,如何入門?
C中的多態(tài)性(雖然多態(tài)性不是C特有的,但C有兩種多態(tài)性:靜態(tài)多態(tài)性和動(dòng)態(tài)多態(tài)性(即靜態(tài)綁定和動(dòng)態(tài)綁定)。靜態(tài)和動(dòng)態(tài)的主要區(qū)別在于綁定是發(fā)生在編譯時(shí)還是運(yùn)行時(shí)。編譯時(shí)發(fā)生的綁定是靜態(tài)綁定,即靜態(tài)多態(tài)性;運(yùn)行時(shí)發(fā)生的綁定是動(dòng)態(tài)綁定,即動(dòng)態(tài)多態(tài)性。靜態(tài)多態(tài)性可以通過(guò)模板和函數(shù)重載來(lái)實(shí)現(xiàn)(C語(yǔ)言中的多態(tài)性主要是模板造成的)。這里有兩個(gè)例子:1)函數(shù)模板