您好,登錄后才能下訂單哦!
這篇文章主要講解了“Java參數(shù)重載的實例用法”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Java參數(shù)重載的實例用法”吧!
package someTest; class SSSuperClass{} class SSSubClass extends SSSuperClass{} public class TestDuplicate { public void function(Object o){ //方法1 System.out.print("Object\n"); } public void function(int[] array){ //方法2 System.out.print("int[] array\n"); } public void function(SSSuperClass array){ //方法3 System.out.print("SSSuperClass\n"); } public void function(SSSubClass array){ //方法4 System.out.print("SSSubClass\n"); } /** * @param args */ public static void main(String[] args) { new TestDuplicate().function(new Object()); //調(diào)用1 new TestDuplicate().function(new int[3]); //調(diào)用2 new TestDuplicate().function(new SSSubClass()); //調(diào)用3 new TestDuplicate().function(new SSSuperClass()); //調(diào)用4 /** * 一切都看似很和諧。參數(shù)重載可以允許父類和子類關(guān)系的存在, * 調(diào)用的時候會根據(jù)實際的參數(shù),尋找最為精確匹配的那個函數(shù)去執(zhí)行。 * 如果我們?nèi)サ舴椒?,調(diào)用4就會發(fā)現(xiàn)方法3才是它最匹配的函數(shù),所以調(diào)用之。 * 如果去掉方法3,調(diào)用4會發(fā)現(xiàn)方法1才是自己的實參最匹配的函數(shù),所以調(diào)用之。 * */ /** * 但是如果我們傳入的不是數(shù)組,也不是任何對象,而是一個null呢??? * 同樣null也會找一個最為精確匹配的函數(shù),但是這里會編譯錯誤。因為這邊有兩條繼承 * 路徑,一個是Object->array[],一個是Object->SSSuperClass->SSSubClass。 * 所以方法2和方法4,null就不知道哪個才是最精確的匹配了。 * 所以我們方法3和方法4在下面的調(diào)用下不兼容,有歧義。 * */ //new TestDuplicate().function(null); //compile error //可以看到null雖然是對象,但是卻什么都不是,甚至連Object都不是,但是他依然會尋找最為匹配的形參 String s = null; String ss = "sss"; if(s instanceof String) System.out.print("s is String"); if(ss instanceof String) System.out.print("ss is String"); if(null instanceof Object) System.out.print("null is a Object"); } }
感謝各位的閱讀,以上就是“Java參數(shù)重載的實例用法”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Java參數(shù)重載的實例用法這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。