關(guān)于Java的多態(tài)性
多態(tài)性有兩種:
1)編譯時多態(tài)性
對于多個同名方法,如果在編譯時能夠確定執(zhí)行同名方法中的哪一個,則稱為編譯時多態(tài)性.
2)運(yùn)行時多態(tài)性
如果在編譯時不能確定,只能在運(yùn)行時才能確定執(zhí)行多個同名方法中的哪一個,則稱為運(yùn)行時多態(tài)性.
方法覆蓋表現(xiàn)出兩種多態(tài)性,當(dāng)對象獲得本類實(shí)例時,為編譯時多態(tài)性,否則為運(yùn)行時多態(tài)性,例如:
XXXX x1 = new XXXX(參數(shù)列表); /pic/p>
XXX xx1 = new XXX(參數(shù)列表);
x1.toString(); /pic/p>
xx1.toString(); /pic/p>
XXXX為XXX的父類.
由于子類對象既是父類對象,父類對象與子類對象之間具有賦值相容性,父類對象能夠被賦值為子類對象.例如,
XXXX x2 = new XXX(參數(shù)列表); /pic/p>
x2.toString(); /pic/p>
x2聲明為父類對象卻獲得子類XXX的實(shí)例,那么x2.toString()究竟執(zhí)行父類方法還是執(zhí)行子類覆蓋的方法呢?
這分為兩種情況:
取決于子類是否覆蓋父類方法.如果子類覆蓋父類方法,則執(zhí)行子類方法;
如果沒有覆蓋,則執(zhí)行父類方法.
在編譯時,僅僅依據(jù)對象所屬的類,系統(tǒng)無法確定到底應(yīng)該執(zhí)行那個類的方法,只有運(yùn)行時才能確定,因此這是運(yùn)行時多態(tài).
父類對象并不能執(zhí)行所有的子類方法,只能執(zhí)行那些父類中聲明子類覆蓋的子類方法.
【Java的多態(tài)性】相關(guān)文章:
Java與Java web的區(qū)別01-30
Java與Java web有什么不同12-05
java教程之Java編程基礎(chǔ)12-06
Java的類02-22
什么是Java02-15
Java 繼承12-20
java講解01-30