而多態(tài)性指的是對(duì)象的多態(tài)性杰标,不是指類兵怯。
所以需要我們new一個(gè)對(duì)象,由這個(gè)對(duì)象可實(shí)現(xiàn)多態(tài)腔剂。
前提是這個(gè)new出來(lái)對(duì)象的類摇零,需要繼承類或者implements接口,也就是必須有父類桶蝎。
以下均使用Java語(yǔ)言舉例說明。
多態(tài)的格式和使用:
比如一只貓是動(dòng)物的子類谅畅,貓被當(dāng)做父類動(dòng)物類來(lái)看待登渣,這就是多態(tài)。
代碼的多態(tài)性毡泻,就是父類引用指向子類對(duì)象胜茧。
如圖,
我有一個(gè)Fu類,有一個(gè)Zi類繼承自Fu類仇味。
程序入口文件main方法呻顽,使用多態(tài)的寫法是
Fu obj = new Zi();
等號(hào)左邊是父類的引用,它指向了等號(hào)右側(cè)子類的對(duì)象丹墨。
多態(tài)中訪問成員變量的兩種方式:
看成員變量是誰(shuí)的就優(yōu)先用誰(shuí)的廊遍,如果沒有則向上找,但是不能向下從子類找贩挣。
比如父類喉前,子類都有一個(gè)成員變量
int num = 10;
如圖,
這個(gè)obj.num没酣,調(diào)用成員變量,優(yōu)先從父類中的num找卵迂。
而obj.showNum()裕便,這個(gè)調(diào)用的成員方法是子類的,則從子類的num找见咒。
多態(tài)中訪問成員方法的特點(diǎn):
就是看右邊new的對(duì)象的成員方法屬于哪個(gè)類偿衰,則用哪個(gè)成員方法(比如子類重寫了父類的成員方法時(shí),我右邊new的是子類改览,則使用子類的成員方法)下翎,當(dāng)子類不存在調(diào)用的成員方法時(shí),則向上找父類的成員方法恃疯。
多態(tài)的好處:
只要繼承父類的子類都可以使用某個(gè)方法并執(zhí)行漏设,無(wú)論之前有的還是后來(lái)新增的,方便擴(kuò)展今妄。
并且提高了代碼的擴(kuò)展性郑口,前期定義的代碼可以使用后期的內(nèi)容,就是后期有父類或接口被子類繼承盾鳞,實(shí)現(xiàn)后只要方法參數(shù)類型是父類的犬性,都可以使用。