- 相關(guān)推薦
關(guān)于Java的多態(tài)性
多態(tài)性有兩種:
1)編譯時多態(tài)性
對于多個同名方法,如果在編譯時能夠確定執(zhí)行同名方法中的哪一個,則稱為編譯時多態(tài)性.
2)運行時多態(tài)性
如果在編譯時不能確定,只能在運行時才能確定執(zhí)行多個同名方法中的哪一個,則稱為運行時多態(tài)性.
方法覆蓋表現(xiàn)出兩種多態(tài)性,當(dāng)對象獲得本類實例時,為編譯時多態(tài)性,否則為運行時多態(tài)性,例如:
XXXX x1 = new XXXX(參數(shù)列表); //對象獲得本類實例,對象與其引用的實例類型一致
XXX xx1 = new XXX(參數(shù)列表);
x1.toString(); //編譯時多態(tài)性,執(zhí)行XXX類的方法.
xx1.toString(); //編譯時多態(tài)性,執(zhí)行XXXX類覆蓋的方法.
XXXX為XXX的父類.
由于子類對象既是父類對象,父類對象與子類對象之間具有賦值相容性,父類對象能夠被賦值為子類對象.例如,
XXXX x2 = new XXX(參數(shù)列表); //父類對象獲得子類實例,子類對象即是父類對象
x2.toString(); //運行時多態(tài)
x2聲明為父類對象卻獲得子類XXX的實例,那么x2.toString()究竟執(zhí)行父類方法還是執(zhí)行子類覆蓋的方法呢?
這分為兩種情況:
取決于子類是否覆蓋父類方法.如果子類覆蓋父類方法,則執(zhí)行子類方法;
如果沒有覆蓋,則執(zhí)行父類方法.
在編譯時,僅僅依據(jù)對象所屬的類,系統(tǒng)無法確定到底應(yīng)該執(zhí)行那個類的方法,只有運行時才能確定,因此這是運行時多態(tài).
父類對象并不能執(zhí)行所有的子類方法,只能執(zhí)行那些父類中聲明子類覆蓋的子類方法.
【Java的多態(tài)性】相關(guān)文章:
java教程之Java編程基礎(chǔ)09-12
JAVA的就業(yè)方向10-09
Java 的分支結(jié)構(gòu)10-27
java的應(yīng)用范圍06-24
Java的不同版本10-28
java如何構(gòu)造09-21
java多線程08-31
Java模擬試題04-27
java的多線程09-09
Java語言的優(yōu)點07-12