資源描述:
《《Java高級編程》第02章理論課構(gòu)造方法與方法重載》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第二章構(gòu)造方法與方法重載回顧對象由屬性(數(shù)據(jù))和方法(函數(shù))組成;類是具有相同屬性和方法的對象的集合;封裝可以隱藏對象實(shí)現(xiàn)的細(xì)節(jié)部分;對象是引用數(shù)據(jù)類型,使用new運(yùn)算符創(chuàng)建對象實(shí)例,使用成員運(yùn)算符訪問對象中的成員;本章相關(guān)詞匯(藍(lán)色為關(guān)鍵字)單詞說明this這,這個overloaded重載,超載overloadedmethod方法重載本章目標(biāo)方法重載重載構(gòu)造方法對象在內(nèi)存中的存放形式this關(guān)鍵字Java中的方法在Java中,函數(shù)直接定義即可;Java中,函數(shù)被稱為方法;定義一個方法的一般形式:[訪問權(quán)限]返回值類型方法名稱(形參列表){方
2、法主體;}我們更關(guān)注的是方法原型,對于方法原型的三個主要組成部分應(yīng)當(dāng)明確區(qū)分:返回值類型方法名稱形式參數(shù)方法原型在Java中定義方法/*Java中的方法示例代碼片段*//*定義求平方值的方法*/publicintsquare(intx){return(x*x);}返回值類型方法名稱形式參數(shù)案例/*編寫求絕對值的方法來求整數(shù)的絕對值*//*AbsoluteValue類,其中包含求絕對值的方法Java中的任何方法都必須在類中定義*/publicclassAbsoluteValue{/*求絕對值的方法*/publicintabs(intx){ret
3、urn((x>=0)?x:-x);}/*main方法,程序入口*/publicstaticvoidmain(String[]args){//必須先實(shí)例化類的對象,才可以調(diào)用到其中的成員方法AbsoluteValueobj=newAbsoluteValue();inta=-8,b;b=obj.abs(a);//調(diào)用abs方法求a的絕對值System.out.println(a+"的絕對值是"+b);}}方法的定義方法的調(diào)用案例分析在上面的案例中,我們已經(jīng)定義了求整數(shù)絕對值的方法;但有時候,我們可能還需要求浮點(diǎn)數(shù)的絕對值,請問:可以繼續(xù)使用這個方
4、法嗎?事實(shí)上是行不通的,這個方法只能求出整數(shù)的絕對值,對于浮點(diǎn)數(shù),還需另外再定義求浮點(diǎn)數(shù)絕對值的方法。修改案例publicclassAbsoluteValue{/*求整數(shù)絕對值的方法*/publicintabsOfInt(intx){return((x>=0)?x:-x);}/*求浮點(diǎn)數(shù)絕對值的方法*/publicfloatabsOfFloat(floatx){return((x>=0)?x:-x);}publicstaticvoidmain(String[]args){AbsoluteValueobj=newAbsoluteValue();
5、inta=-8,b;b=obj.absOfInt(a);System.out.println(a+"的絕對值是"+b);floatc=-3.14f,d;d=obj.absOfFloat(c);System.out.println(c+"的絕對值是"+d);}}如果還要求其它類型的絕對值,就需要定義更多的方法,這對于調(diào)用者來說,將會是非常麻煩的事情。方法重載用于定義一組方法,這些方法具有相同的名稱,并執(zhí)行類似的操作,但是卻使用不同的參數(shù)列表;編譯器會根據(jù)調(diào)用時傳遞的實(shí)際參數(shù)自動判斷具體調(diào)用的是哪個重載方法,如:/*abs方法的重載*/intab
6、s(intx){……}floatabs(floatx){……}doubleabs(doublex){……}longabs(longx){……}方法重載的三大原則方法名相同參數(shù)不同(可以有三方面的不同)數(shù)量不同類型不同順序不同同一作用域溫馨提示:方法重載跟方法的返回值類型沒有任何關(guān)系。也就是說,只有返回值不同的方法不能構(gòu)成重載。/*錯誤的方法重載*/voidfun(intx){……};intfun(intx){……};方法重載示例publicclassAbsoluteValue{publicintabs(intx){//重載方式1,求整數(shù)的絕對
7、值return((x>=0)?x:-x);}publicfloatabs(floatx){//重載方式2,求浮點(diǎn)數(shù)的絕對值return((x>=0)?x:-x);}publicdoubleabs(doublex){//重載方式3,求雙精度數(shù)的絕對值return((x>=0)?x:-x);}publiclongabs(longx){//重載方式4,求長整型數(shù)的絕對值return((x>=0)?x:-x);}publicstaticvoidmain(String[]args){AbsoluteValueobj=newAbsoluteValue()
8、;inta=-8,b;b=obj.abs(a);System.out.println(a+"的絕對值是"+b);floatc=-3.14f,d;d=obj.abs(