面向?qū)ο?教案(第8講) 構(gòu)造方法_第1頁(yè)
面向?qū)ο?教案(第8講) 構(gòu)造方法_第2頁(yè)
面向?qū)ο?教案(第8講) 構(gòu)造方法_第3頁(yè)
面向?qū)ο?教案(第8講) 構(gòu)造方法_第4頁(yè)
面向?qū)ο?教案(第8講) 構(gòu)造方法_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

《面向?qū)ο蟪绦蛟O(shè)計(jì)》教案第8講教學(xué)對(duì)象計(jì)算機(jī)科學(xué)技術(shù)專業(yè)授課內(nèi)容4.3構(gòu)造方法4.4案例學(xué)習(xí)——使用自定義Date日期類課堂演練課程標(biāo)準(zhǔn)教學(xué)目標(biāo)(一)知識(shí)目標(biāo)1.掌握類的封裝方式2.掌握構(gòu)造方法的定義和作用3.掌握構(gòu)造方法的重載4.this關(guān)鍵字(二)能力目標(biāo)1.學(xué)會(huì)定義類和創(chuàng)建類的實(shí)例2.能夠熟練使用構(gòu)造方法進(jìn)行成員變量初始化教學(xué)方法課前預(yù)習(xí)、課堂講授、課堂和課后練習(xí)。學(xué)時(shí)及分配(第1學(xué)時(shí)50分鐘)課堂講授30分鐘課堂練習(xí)20分鐘4.3.1無(wú)參構(gòu)造方法4.3.2帶參構(gòu)造方法4.3.3構(gòu)造方法的重載4.3.4this關(guān)鍵字學(xué)時(shí)及分配(第2學(xué)時(shí)50分鐘)課堂講授15分鐘課堂練習(xí)35分鐘4.4案例學(xué)習(xí)——使用自定義Date日期類課堂演練知識(shí)點(diǎn)分析重點(diǎn):類的封裝方式構(gòu)造方法的作用和定義難點(diǎn):this關(guān)鍵字構(gòu)造方法的重載教學(xué)過(guò)程設(shè)計(jì)內(nèi)容方式問(wèn)題導(dǎo)入封裝是面向?qū)ο蟮娜筇卣髦唬斫獠⒄莆辗庋b對(duì)于學(xué)習(xí)Java面向?qū)ο蟮膬?nèi)容十分重要。本節(jié)中將從類的封裝開(kāi)始講解,同時(shí)在前面定定義的基礎(chǔ)上來(lái)進(jìn)一步學(xué)習(xí)構(gòu)造方法和重載。從前面所學(xué)到的知識(shí)可以發(fā)現(xiàn),實(shí)例化一個(gè)類的對(duì)象后,如果要為這個(gè)對(duì)象中的屬性賦值,則必須通過(guò)直接訪問(wèn)對(duì)象的屬性或調(diào)用setXxx()方法的方式才可以。如果需要在實(shí)例化對(duì)象的同時(shí)就為這個(gè)對(duì)象的屬性進(jìn)行賦值,可以通過(guò)構(gòu)造方法來(lái)實(shí)現(xiàn)。構(gòu)造方法(也被稱為構(gòu)造器)是類的一個(gè)特殊成員,它會(huì)在類實(shí)例化對(duì)象時(shí)被自動(dòng)調(diào)用。同時(shí),后續(xù)也會(huì)對(duì)this關(guān)鍵字進(jìn)行講解。內(nèi)容要點(diǎn)4.3構(gòu)造方法每個(gè)類都有構(gòu)造方法,構(gòu)造方法用來(lái)創(chuàng)建類的對(duì)象或?qū)嵗?gòu)造方法也有名稱、參數(shù)和方法體。構(gòu)造方法與普通方法的區(qū)別是:構(gòu)造方法的名稱必須與類名相同。構(gòu)造方法不能有返回值,也不能返回void。構(gòu)造方法必須在創(chuàng)建對(duì)象時(shí)用new運(yùn)算符調(diào)用。構(gòu)造方法定義的格式為:[public|protected|private]類名([參數(shù)列表]){//方法體}4.3.1無(wú)參數(shù)構(gòu)造方法如果在定義類是時(shí)沒(méi)有為類定義任何構(gòu)造方法,則編譯器自動(dòng)為類添加一個(gè)默認(rèn)構(gòu)造方法(defaultconstructor)。默認(rèn)構(gòu)造方法是無(wú)參數(shù)構(gòu)造方法(no-argsconstructor),方法體為空。假設(shè)沒(méi)有為Account類定義構(gòu)造方法,編譯器提供的默認(rèn)構(gòu)造方法如下:publicAccount(){}//默認(rèn)構(gòu)造方法用戶也可以為類定義無(wú)參數(shù)構(gòu)造方法,并在方法體中初始化對(duì)象。例如,在Account類中,可以定義下面的無(wú)參數(shù)構(gòu)造方法:publicAccount(){id=0;初始化成員變量name="";初始化成員變量balance=100;}使用無(wú)參數(shù)構(gòu)造方法創(chuàng)建對(duì)象,只需在類名后使用一對(duì)括號(hào)即可,如下所示:AccountmyAccount=newAccount();4.3.2帶參數(shù)構(gòu)造方法如果希望在創(chuàng)建一個(gè)對(duì)象時(shí)就將其成員變量設(shè)置為某個(gè)值,而不是采用默認(rèn)值。這時(shí)可以定義帶參數(shù)構(gòu)造方法。例如,在創(chuàng)建一個(gè)Account對(duì)象時(shí)就指定賬戶ID、姓名和余額,則可以定義如下帶三個(gè)參數(shù)的構(gòu)造方法。publicAccount(inti,Stringn,doubleb){用參數(shù)初始化成員變量id=i

;用參數(shù)初始化成員變量name=n;balance=b;}然后,在創(chuàng)建Account對(duì)象時(shí)可以指定賬戶ID、姓名和余額,如下代碼創(chuàng)建一個(gè)ID為1002,姓名為“李清泉”,余額為8000的賬戶對(duì)象。Accountaccount=newAccount(1002,"李清泉",8000.00);注意,一旦為類定義了帶參數(shù)的構(gòu)造方法,編譯器就不再提供默認(rèn)構(gòu)造方法。4.3.3構(gòu)造方法的重載構(gòu)造方法和普通方法都可以重載,所謂重載是在一個(gè)類中可以定義名稱相同、參數(shù)不同的方法。4.7節(jié)將詳細(xì)討論方法重載。下面程序?yàn)锳ccount類定義了3個(gè)重載的構(gòu)造方法,其中包含一個(gè)無(wú)參數(shù)構(gòu)造方法和兩個(gè)帶參數(shù)的構(gòu)造方法。【程序4-4】Account.javapackagecom.boda.xy;publicclassAccount{publicintid;publicStringname;publicdoublebalance;publicAccount(){無(wú)參數(shù)構(gòu)造方法this.id=0;無(wú)參數(shù)構(gòu)造方法="";this.balance=0.0;}publicAccount(intid,Stringname){帶兩個(gè)參數(shù)構(gòu)造方法this.id=id;帶兩個(gè)參數(shù)構(gòu)造方法=name;}publicAccount(intid,Stringname,doublebalance){帶三個(gè)參數(shù)構(gòu)造方法this.id=id;帶三個(gè)參數(shù)構(gòu)造方法=name;this.balance=balance;}//其他代碼}4.3.4this關(guān)鍵字this表示對(duì)象本身,它自動(dòng)傳遞給實(shí)例方法和構(gòu)造方法。在一個(gè)方法的方法體或參數(shù)中,也可能聲明與成員變量同名的局部變量,此時(shí)的局部變量會(huì)隱藏成員變量。要使用成員變量就需要在前面加上this關(guān)鍵字,例如:publicAccount(intid,Stringname,doublebalance){this.id=id;=name;this.balance=balance;}this關(guān)鍵字的另一個(gè)用途是在一個(gè)構(gòu)造方法中調(diào)用該類的另一個(gè)構(gòu)造方法。如下所示:publicAccount(){this(1002,"張明月",5000);}【注意】如果在構(gòu)造方法中調(diào)用另一個(gè)構(gòu)造方法,則this語(yǔ)句必須是第一條語(yǔ)句。綜上所述,this關(guān)鍵字主要使用在下面三種情況。解決局部變量與成員變量同名的問(wèn)題。解決方法參數(shù)與成員變量同名的問(wèn)題。用來(lái)調(diào)用該類的另一個(gè)構(gòu)造方法。4.4案例學(xué)習(xí):使用自定義Date日期類1.問(wèn)題描述在Java程序中經(jīng)常需要使用其他的類,包括核心類庫(kù)的類、用戶自定義的類和第三方類庫(kù)的類。這里筆者定義了一個(gè)名為com.boda.utils.Date的日期類,并且將它打包到一個(gè)com.boda.jar文件中,現(xiàn)在看如何使用這個(gè)類。Date類的UML圖如圖4-6所示。DateDate-year:int-month:int-day:int+Date()+Date(year:int,month:int,day:int)+getYear():int+getMonth():int+getDay()

:int+between(Dateanother):long+isAfter(Dateanother):boolean+isBefore(Dateanother):boolean+isLeapYear():boolean+toString():String日期的年日期的年日期的月日期的日默認(rèn)構(gòu)造方法,返回當(dāng)前系統(tǒng)日期帶參數(shù)構(gòu)造方法返回year的方法返回month的方法返回day的方法返回當(dāng)前日期與參數(shù)日期相差的天數(shù)返回當(dāng)前日期是否在參數(shù)日期之后返回當(dāng)前日期是否在參數(shù)日期之前返回單簽日期的年是否是閏年返回日期的字符串表示,如2022-10-20圖4-6Date類的UML圖該類定義了3個(gè)私有成員變量,2個(gè)構(gòu)造方法,8個(gè)普通方法。針對(duì)上面給出的Date類,完成下面操作:(1)創(chuàng)建一個(gè)日期對(duì)象today表示今天的日期(用默認(rèn)構(gòu)造方法),調(diào)用today的toString()方法輸出今天的日期。

(2)創(chuàng)建一個(gè)日期對(duì)象birthday表示你的出生日期(用帶參數(shù)構(gòu)造方法)。

(3)輸出你的出生日期的年是否是閏年。

(4)計(jì)算并輸出從你出生到今天一共過(guò)去多少天。2.設(shè)計(jì)思路本案例要求讀者根據(jù)給定類的描述,學(xué)會(huì)類的使用,包括創(chuàng)建對(duì)象和調(diào)用方法。對(duì)于該案例,首先需要將com.boda.jar打包文件添加到類路徑中,該文件隨本書(shū)源代碼一起提供,將它添加到Eclipse的Classpath類路徑中。具體操作如下:鼠標(biāo)右鍵單擊項(xiàng)目名,選擇BuildPath→ConfigureBuildPath,在打開(kāi)的窗口右側(cè)選擇Libraries標(biāo)簽,選中Classpath,單擊右側(cè)AddExternalJARs按鈕,添加該com.boda.jar文件。之后在用戶的程序中就可以根據(jù)類的描述使用類。3.代碼實(shí)現(xiàn)【程序4-5】DateDemo.javapackagecom.boda.xy;importcom.boda.utils.Date;publicclassDateDemo{publicstaticvoidmain(String[]args){Datetoday=newDate();System.out.println(today.toString());Datebirthday=newDate(2002,10,26);System.out.println(birthday.getYear()+"年"+(birthday.isLeapYear()?"是閏年":"不是閏年"));System.out.println("你已出生"+birthday.between(today)+"天。");}}【課堂演練】定義Circle類表示圓,其中含有double型的成員變量centerX、centerY表示圓心坐標(biāo),radius表示圓的半徑。定義求圓面積的方法getArea()方法和求圓周長(zhǎng)的方法getPerimeter()。為半徑radius定義訪問(wèn)方法和修改方法。定義一個(gè)帶參數(shù)構(gòu)造方法,通過(guò)給出圓的半徑創(chuàng)建圓對(duì)象。定義默認(rèn)構(gòu)造方法,在該方法中調(diào)用有參數(shù)構(gòu)造方法,將圓的半徑設(shè)置為1.0。畫出該類的UML圖。編寫程序測(cè)試這個(gè)圓類的所有方法。采用機(jī)房授課邊講邊練,同時(shí)用啟發(fā)式、討論式、案例教學(xué)等教學(xué)方法。布置課外學(xué)習(xí)任務(wù)定義Rectangle類表示矩形,其中含有l(wèi)ength、width兩個(gè)double型的成員變量表示矩形的長(zhǎng)和寬。要求為每個(gè)變量定義訪問(wèn)方法和修改方法,定義求矩形周長(zhǎng)的方法getPerimeter()和求面積的方法getArea()。定義一個(gè)帶參數(shù)構(gòu)造方法,通過(guò)給出的長(zhǎng)和寬創(chuàng)建矩形對(duì)象。定義默認(rèn)構(gòu)造方法,在該方法中調(diào)用有參數(shù)構(gòu)造方法,將矩形長(zhǎng)寬都設(shè)置為1.0。畫出該類的UML圖。編寫程序測(cè)試這個(gè)矩形類的所有方法。定義一個(gè)名為Account的類實(shí)現(xiàn)賬戶管理,它的UML圖如圖所示。編寫一個(gè)應(yīng)用程序測(cè)試Account類的使用。AccountAccount-id:int-balance:double-annulRate:double-dateCreated:LocalDate+Account()+Account(id:int,balance:double)+getId():int+setId(intid):void+getBalance():double+setBalance(doublebalance):void+getAnnualRate():double+setAnnualRate(annualRate:double):void+getDateCreated():LocalDate

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論