第三章-方法、方法重載、構(gòu)造方法課件_第1頁
第三章-方法、方法重載、構(gòu)造方法課件_第2頁
第三章-方法、方法重載、構(gòu)造方法課件_第3頁
第三章-方法、方法重載、構(gòu)造方法課件_第4頁
第三章-方法、方法重載、構(gòu)造方法課件_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

類的方法方法:是類或?qū)ο蟮男袨樘卣鞯某橄?方法是一個命名的代碼塊,如同數(shù)學(xué)中的函數(shù)作用:方法只能完成一個特定的功能,它可以把程序中的特定功能組合到一起,便于多次使用。也使程序變得清晰。聲明格式:[修飾符]返回值類型方法名([形參列表]){局部變量聲明執(zhí)行語句}類的方法方法:是類或?qū)ο蟮男袨樘卣鞯某橄?方法是一個命名的代類的方法聲明格式:[修飾符]返回值類型方法名([形參列表]){局部變量聲明執(zhí)行語句}返回值類型:基本數(shù)據(jù)類型或引用數(shù)據(jù)類型方法名:符合標(biāo)識符的命名規(guī)則方法名后必需加()形參:接收方法調(diào)用者傳遞過來的數(shù)據(jù),可以是基本數(shù)據(jù)類型或引用數(shù)據(jù)類型,多個參數(shù)以,號隔開實參:調(diào)用方法時實際傳遞給方法的參數(shù)方法返回值:用return語句,把一個確定的值返回給調(diào)用者,return的返回值類型必需與聲明的返回值類型匹配,無返回值用void關(guān)鍵字類的方法聲明格式:值傳遞

Java中進行賦值操作或方法調(diào)用中傳遞參數(shù)時,遵循值傳遞的原則:基本類型數(shù)據(jù)傳遞的是該數(shù)據(jù)的值本身引用類型數(shù)據(jù)傳遞的是對對象的引用(句柄),而非對象本身值傳遞

類的方法1、寫出獅子對象的“跑”方法、“叫”方法電動玩具獅子屬性:顏色:黃色行為:跑叫按此按鈕,獅子開始叫按此按鈕,獅子開始跑類的方法按此按鈕,按此按鈕,類的方法示例AutoLion類代碼實現(xiàn)publicclassAutoLion{Stringcolor="黃色";publicvoidrun(){System.out.println("正在以0.1米/秒的速度向前奔跑");}publicStringbark(){Stringsound="大聲吼叫";returnsound;}}方法體返回類型方法名稱類的方法示例AutoLion類代碼實現(xiàn)publicclas如何定義類的方法類的方法定義類的某種行為(或功能)方法的定義方法的名稱方法的主體方法返回的數(shù)據(jù)類型定義類的方法public返回值類型方法名(){//這里編寫方法的主體}步驟一:定義方法名以及返回值步驟二:編寫方法體如何定義類的方法類的方法定義類的某種行為(或功能)方法的返回值兩種情況如果方法具有返回值,方法中必須使用關(guān)鍵字return返回該值,返回類型為該返回值的類型如果方法沒有返回值,返回類型為voidpublicclassStudent{Stringname="張三";publicvoidgetName(){returnname;}……}返回類型要匹配return表達式;編譯錯誤作用:跳出方法給出結(jié)果方法的返回值兩種情況publicclassStudent方法調(diào)用方法是個“黑匣子”,完成某個特定的應(yīng)用程序功能,并返回結(jié)果方法調(diào)用:執(zhí)行方法中包含的語句

對象名.方法名();2、小明過生日,爸爸送他一個電動獅子玩具,編程測試這個獅子能否正常工作方法調(diào)用方法是個“黑匣子”,完成某個特定的應(yīng)用程序功能,并返方法調(diào)用publicclassAutoLion{Stringcolor="黃色";//顏色

/*跑*/publicvoidrun(){System.out.println("正在以0.1米/秒的速度向前奔跑。");}/*叫*/publicStringbark(){Stringsound="大聲吼叫";returnsound;}/*獲得顏色*/publicStringgetColor(){returncolor;}/*顯示獅子特性*/publicStringshowLion(){return"這是一個"+getColor()+"的玩具獅子!";}}publicclassTestLion{publicstaticvoidmain(String[]args){AutoLionlion=newAutoLion();System.out.println(lion.showLion());lion.run();System.out.println(lion.bark());}}在類的方法中調(diào)用該類另一個方法演示示例2:方法調(diào)用在main()方法中調(diào)用類的方法方法調(diào)用publicclassAutoLion{p方法調(diào)用小結(jié)方法之間允許相互調(diào)用,不需要知道方法的具體實現(xiàn),提高了效率情況

舉例Student類的方法a()調(diào)用Student類的方法b(),直接調(diào)用publicvoida(){b();//調(diào)用b()}Student類的方法a()調(diào)用Teacher類的方法b(),先創(chuàng)建類對象,然后使用“.”調(diào)用publicvoida(){Teachert=newTeacher();t.b();//調(diào)用Teacher類的b()}方法調(diào)用小結(jié)方法之間允許相互調(diào)用,不需要知道方法的具體實現(xiàn),publicclassStudent{ publicvoidshowInfo(){ return"我是一名學(xué)生"; }}方法的返回類型為void,方法中不能有return返回值!常見錯誤4-1publicclassStudent{方法的返回類型為vpublicclassStudent{ publicdoublegetInfo(){ doubleweight=95.5; doubleheight=1.69; returnweight,height; }}方法不能返回多個值!常見錯誤4-2publicclassStudent{方法不能返回多個值publicclassStudent{ publicStringshowInfo(){ return"我是一名學(xué)生"; publicdoublegetInfo(){ doubleweight=95.5; doubleheight=1.69; returnweight; } }}多個方法不能相互嵌套定義!常見錯誤4-3publicclassStudent{ publicStringshowInfo(){ return"我是一名學(xué)生"; } publicdoublegetInfo(){ doubleweight=95.5; doubleheight=1.69; returnweight; }}publicclassStudent{多個方法不能相互嵌publicclassStudent{ intage=20; if(age<20){ System.out.println("年齡不符合入學(xué)要求!"); } publicvoidshowInfo(){ return"我是一名學(xué)生"; }}不能在方法外部直接寫程序邏輯代碼!常見錯誤4-4publicclassStudent{不能在方法外部直接小結(jié)1編寫電池類(Cell):具有品牌屬性,可以續(xù)電編寫測試類(TestCell)電池類屬性:品牌行為:續(xù)電小結(jié)1編寫電池類(Cell):具有品牌屬性,可以續(xù)電電池類屬成員變量和局部變量2-1變量聲明的位置決定變量作用域變量作用域確定可在程序中按變量名訪問該變量的區(qū)域…for(inti=0,a=0;i<4;i++){a++;}System.out.println(a);…代碼錯誤a的作用域僅在for循環(huán)中成員變量和局部變量2-1變量聲明的位置決定變量作用域…代碼錯成員變量和局部變量2-2變量1類型變量1;變量2類型變量2;變量3類型變量3;public返回類型方法1(){

變量4類型變量4;}public返回類型方法2(){

變量5類型變量5;}publicclassAutoLion{}AutoLion類的方法,其他類的方法誰能使用這些變量?方法1方法2成員變量局部變量局部變量成員變量和局部變量2-2變量1類型變量1;成員變量和局部變量的區(qū)別作用域不同局部變量的作用域僅限于定義它的方法成員變量的作用域在整個類內(nèi)部都是可見的初始值不同Java會給成員變量一個初始值Java不會給局部變量賦予初始值在同一個方法中,不允許有同名局部變量;在不同的方法中,可以有同名局部變量成員變量和局部變量的區(qū)別作用域不同publicclassTest{intscore1=88;intscore2=98;publicvoidcalcAvg(){intavg=(score1+score2)/2;}publicvoidshowAvg(){System.out.println("平均分是:"+avg);}}常見錯誤局部變量avg的作用域僅限于calcAvg()方法publicclassTest{常見錯誤局部變量avg方法重載OverloadJava允許一個類中定義多個同名的方法,只要形參列表不同就可以,如果同一個類中包含兩個或兩個以上的方法名稱相同,則稱為方法重載要求:方法名相同參數(shù)類型、個數(shù),順序至少有一項不同方法的返回類型可以不相同方法的修飾符可以不同原則:只對不同的數(shù)據(jù)完成基本相同的任務(wù)的方法才用方法重載

方法重載OverloadJava允許一個類中定義多個同名的方方法重載Overload優(yōu)點:不必對相同的操作使用不同的方法名有助于更輕松的理解和調(diào)試代碼易于維護代碼publicclassMath{intmax(inta,intb){ returna>b?a:b;}doublemax(doublea,doubleb){ returna>b?a:b;}}Math類中兩個max方法,滿足重載條件方法重載Overload優(yōu)點:publicclassMa生活中的方法重載類方法方法參數(shù)方法實現(xiàn)司機轎車巴士火車駕駛啟動、行駛、……等待乘客上車、啟動、行駛、到站停車、……正點發(fā)車、行駛、到站停車、……如果用代碼實現(xiàn),我們需要三個方法,這些方法的方法名稱相同,參數(shù)類型不同生活中的方法重載類方法方法參數(shù)方法實現(xiàn)司機轎車巴士火車方法重載的代碼示例1方法重載并不陌生java.io.PrintStream類的println方法能夠打印數(shù)據(jù)并換行,根據(jù)數(shù)據(jù)類型的不同,有多種實現(xiàn)方式publicclassTest{publicstaticvoidmain(String[]args)inti=0;charc='z';Stringstr="hello";System.out.println(i);System.out.println(c);System.out.println(str);}}PrintStreamprintln(int)println(char)println(String)……方法名相同,參數(shù)類型不同調(diào)用不同的println方法方法重載方法重載的代碼示例1方法重載并不陌生publicclas方法重載的代碼示例2java.lang.Math類的max()方法能夠從兩個數(shù)字中取出最大值,它有多種實現(xiàn)方式運行時,Java虛擬機先判斷給定參數(shù)的類型,然后決定到底執(zhí)行哪個max()方法Mathmax(inta,intb)max(floata,floatb)max(longa,longb)max(doublea,doubleb)publicclassTest{publicstaticvoidmain(String[]args){Math.max(1,2);Math.max(1.0F,2.F);Math.max(1.0,2);}}方法重載方法重載的代碼示例2java.lang.Math類的max構(gòu)造方法重載2-1構(gòu)造方法重載是方法重載的典型示例publicclassTeacher7{privateStringname;//教員姓名privateStringschool="長沙";//所在中心publicTeacher7(Stringname){ =name;//設(shè)定教員姓名}publicTeacher7(Stringname,Stringschool){=name;//設(shè)定教員姓名this.school=school;//設(shè)定教員的所在中心}publicStringintroduction(){ return"大家好!我是"+school+"的"+name;}}構(gòu)造方法重載構(gòu)造方法重載2-1構(gòu)造方法重載是方法重載的典型示例publ構(gòu)造方法重載2-2通過調(diào)用不同的構(gòu)造方法來表達對象的多種初始化行為例如:默認(rèn)情況下,教師來自北京中心,初始化時,只需提供教員姓名有時,需要提供所在中心名稱及教員姓名publicclassTeacher7Test{publicstaticvoidmain(String[]args){Teacher7teacher1=newTeacher7("李芳");System.out.println(roduction());AccpTeacher7teacher2=newTeacher7("張欣",

"天津中心");System.out.println(roduction());}}大家好!我是北京中心的李芳大家好!我是天津中心的張欣構(gòu)造方法重載2-2通過調(diào)用不同的構(gòu)造方法來表達對象的多種初方法重載(常見錯誤)publicclassMath{intMax(inta,intb){ returna>b?a:b;}intmax(intb,intb){ returna>b?a:b;}}方法名不相同,不構(gòu)成重載方法重載(常見錯誤)publicclassMath{方法構(gòu)造方法構(gòu)造方法是一個特殊的方法,用于創(chuàng)建類的對象,并完成一些初始化工作,它總是與new關(guān)鍵字一起使用來創(chuàng)建對象.要求:方法名必需與類名相同不能聲明返回類型構(gòu)造方法不能被子類繼承,不能被static,final,abstract,native修飾重載構(gòu)造方法當(dāng)創(chuàng)建一個對象時,在不同的條件下,可能有不同的初始化行為,則需定義不同的構(gòu)造方法構(gòu)造方法構(gòu)造方法是一個特殊的方法,用于創(chuàng)建類的對象,并完成一構(gòu)造方法默認(rèn)的構(gòu)造方法默認(rèn)的構(gòu)造方法是指無參數(shù)的構(gòu)造方法,可分為兩種隱含的默認(rèn)構(gòu)造方法程序顯示定義的默認(rèn)構(gòu)造方法在一個類中,沒有定義構(gòu)造方法,java編譯器會提供一個無參數(shù)的構(gòu)造方法,如果定義了構(gòu)造方法,則編譯器不會提供默認(rèn)的無參構(gòu)造方法.構(gòu)造方法默認(rèn)的構(gòu)造方法構(gòu)造方法示例publicclassPerson{ Stringname; publicPerson(){ }

publicPerson(String_name){name=_name;}}構(gòu)造方法重載構(gòu)造方法構(gòu)造方法示例publicclassPerson{構(gòu)造方構(gòu)造方法(常見錯誤)publicclassPerson{ Stringname; publicvoidPerson(){ }

publicPerson(String_name){name=_name;}publicstaticvoidmain(Stringargs[]){ Personp=newPerson();}}方法有返回類型,盡管是一個方法,但不是構(gòu)造方法編譯錯誤,默認(rèn)無參數(shù)的構(gòu)造方法在自定義了構(gòu)造方法后,java編譯器不再提供,無法調(diào)用無參構(gòu)造方法創(chuàng)建Person類的實例構(gòu)造方法(常見錯誤)publicclassPerson給定如下Java代碼,請指出代碼中的錯誤,并解釋原因。publicclassSample{privateintx;publicSample(){ x=1;}p

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論