(教案)Java程序設(shè)計(jì)精編教程(第3版)-教案48學(xué)時(shí)-第6章_第1頁(yè)
(教案)Java程序設(shè)計(jì)精編教程(第3版)-教案48學(xué)時(shí)-第6章_第2頁(yè)
(教案)Java程序設(shè)計(jì)精編教程(第3版)-教案48學(xué)時(shí)-第6章_第3頁(yè)
(教案)Java程序設(shè)計(jì)精編教程(第3版)-教案48學(xué)時(shí)-第6章_第4頁(yè)
(教案)Java程序設(shè)計(jì)精編教程(第3版)-教案48學(xué)時(shí)-第6章_第5頁(yè)
已閱讀5頁(yè),還剩12頁(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)介

PAGEPAGE17授課內(nèi)容學(xué)時(shí)分配教學(xué)方法與手段進(jìn)度計(jì)劃(周次)課堂講授(學(xué)時(shí))上機(jī)實(shí)踐(學(xué)時(shí))Java入門2201Java應(yīng)用程序的基本結(jié)構(gòu)4221-2標(biāo)識(shí)符與簡(jiǎn)單的數(shù)據(jù)類型運(yùn)算符、表達(dá)式與語(yǔ)句2202類與對(duì)象8623~4子類與繼承4405接口與實(shí)現(xiàn)4226內(nèi)部類與異常類2207常用實(shí)用類4407-8輸入、輸出流2208組件及事件處理6429-10Java多線程機(jī)制44010-11Java網(wǎng)絡(luò)編程22011JDBC數(shù)據(jù)庫(kù)操作42212總學(xué)時(shí)=SUM(ABOVE)48=SUM(ABOVE)38=SUM(ABOVE)10

各章教學(xué)實(shí)施計(jì)劃章節(jié)題目第6章子類與繼承6.1節(jié)-6.5節(jié)學(xué)時(shí)2教學(xué)目的、要求(分了解、理解、掌握三個(gè)層次):1、掌握子類的繼承性、子類與對(duì)象。2、掌握成員變量的隱藏和方法重寫。3、了解super關(guān)鍵字、final關(guān)鍵字。教學(xué)內(nèi)容(包括基本內(nèi)容、重點(diǎn)、難點(diǎn)):基本內(nèi)容:子類與父類子類的繼承性成員變量的隱藏和方法重寫super關(guān)鍵字final關(guān)鍵字教學(xué)重點(diǎn):重點(diǎn)是類的繼承性、方法重寫。教學(xué)難點(diǎn):難點(diǎn)是理解子類繼承過(guò)程中成員變量的隱藏與方法重寫。討論、思考題、作業(yè):P114習(xí)題61題、2題、6題預(yù)習(xí)第6章6.6-6.10節(jié)參考書目(含參考書、文獻(xiàn)等)具體內(nèi)容:參考書對(duì)應(yīng)章節(jié)

課堂教學(xué)實(shí)施計(jì)劃第7課教學(xué)過(guò)程設(shè)計(jì):復(fù)習(xí)5分鐘;授新課95分鐘討論5分鐘;其它分鐘授課類型(請(qǐng)打√):理論課√討論課□實(shí)驗(yàn)課□習(xí)題課□其它□教學(xué)方式(請(qǐng)打√):講授√討論□示教□指導(dǎo)□其它□教學(xué)手段(請(qǐng)打√):多媒體模型□實(shí)物□掛圖□音像□其它√基本內(nèi)容:子類與父類子類的繼承性成員變量的隱藏和方法重寫super關(guān)鍵字final關(guān)鍵字教學(xué)重點(diǎn):重點(diǎn)是類的繼承性、方法重寫。教學(xué)難點(diǎn):難點(diǎn)是理解子類繼承過(guò)程中成員變量的隱藏與方法重寫?!?.1子類與父類繼承是一種由已有的類創(chuàng)建新類的機(jī)制。利用繼承,我們可以先創(chuàng)建一個(gè)共有屬性的一般類,根據(jù)該一般類再創(chuàng)建具有特殊屬性的新類,新類繼承一般類的狀態(tài)和行為,并根據(jù)需要增加它自己的新的狀態(tài)和行為。由繼承而得到的類稱為子類,被繼承的類稱為父類(超類)。Java不支持多重繼承(子類只能有一個(gè)父類)。聲明一個(gè)類的子類的格式如下:class子類名extends父類名{…}§6.2子類的繼承性類可以有兩種重要的成員:成員變量和方法。子類的成員中有一部分是子類自己聲明定義的,另一部分是從它的父類繼承的。所謂子類繼承父類的成員變量就是把繼承來(lái)的變量作為自己的一個(gè)成員變量,就好象它們是在子類中直接聲明一樣,可以被子類中自己定義的任何實(shí)例方法操作。所謂子類繼承父類的方法就是把繼承來(lái)的方法作為子類中的一個(gè)方法,就好象它們是在子類中直接定義了一樣,可以被子類中自己定義的任何實(shí)例方法調(diào)用?!?.2.1子類和父類在同一包中的繼承性(重點(diǎn))如果子類和父類在同一個(gè)包中,那么,子類自然地繼承了其父類中不是private的成員變量作為自己的成員變量,并且也自然地繼承了父類中不是private的方法作為自己的方法,繼承的成員變量或方法的訪問(wèn)權(quán)限保持不變。例子1Example6_1.javaclassPeople{floatweight,height;Stringname;voidspeak(Strings){System.out.println(s);}}classStudentextendsPeople{intnumber;doubleadd(doublea,doubleb){returna+b;}}publicclassExample6_1{publicstaticvoidmain(Stringargs[]){StudentzhangSan=newStudent();zhangSan.weight=65.9f;zhangSan.height=182f;zhangS="張三";zhangSan.number=201011;zhangSan.speak("我是"+zhangS+",我的學(xué)號(hào):"+zhangSan.number);System.out.println("我的身高:"+zhangSan.height+"cm,我的體重:"+zhangSan.weight+"kg");System.out.println("我會(huì)做加法:");doublesum=zhangSan.add(23.5,879.987);System.out.println("sum="+sum);}}§6.2.2子類和父類不在同一包中的繼承性

如果子類和父類不在同一個(gè)包中,那么,子類繼承了父類的protected、public成員變量做為子類的成員變量,并且繼承了父類的protected、public方法為子類的方法,繼承的成員或方法的訪問(wèn)權(quán)限保持不變?!?.2.3繼承關(guān)系(Generalization)的UML圖如果一個(gè)類是另一個(gè)類的子類,那么UML通過(guò)使用一個(gè)實(shí)線連接兩個(gè)類的UML圖來(lái)表示二者之間的繼承關(guān)系,實(shí)線的起始端是子類的UML圖,終點(diǎn)端是父類的UML圖,但終點(diǎn)端使用一個(gè)空心的三角形表示實(shí)線的結(jié)束。§6.3成員變量的隱藏和方法重寫§6.3.1成員變量的隱藏對(duì)于子類可以從父類繼承的成員變量,只要子類中聲明的成員變量和父類中的成員變量同名時(shí),子類就隱藏了繼承的成員變量,子類自己聲明定義的方法操作與父類同名的成員變量是指子類重新聲明定義的這個(gè)成員變量?!?.3.2方法重寫(Override)(重點(diǎn))子類通過(guò)重寫可以隱藏已繼承的實(shí)例方法。1)重寫的語(yǔ)法規(guī)則如果子類繼承了父類的實(shí)例方法,那么子類就有權(quán)利重寫這個(gè)方法。方法重寫是指:子類中定義一個(gè)方法,這個(gè)方法的類型和父類的方法的類型一致或是父類方法的類型的子類型,且這個(gè)方法的名字、參數(shù)個(gè)數(shù)、參數(shù)的類型和父類的方法完全相同.2)重寫的目的子類通過(guò)方法的重寫可以隱藏繼承的方法,子類通過(guò)方法的重寫可以把父類的狀態(tài)和行為改變?yōu)樽陨淼臓顟B(tài)和行為。例子2University.javapublicclassUniversity{voidenterRule(doublemath,doubleenglish,doublechinese){doubletotal=math+english+chinese;if(total>=200)System.out.println(total+"分達(dá)到大學(xué)錄取線");elseSystem.out.println(total+"分未達(dá)到大學(xué)錄取線");}}ImportantUniversity.javapublicclassImportantUniversityextendsUniversity{voidenterRule(doublemath,doubleenglish,doublechinese){doubletotal=math+english+chinese;if(total>=245)System.out.println(total+"分達(dá)到重點(diǎn)大學(xué)錄取線");elseSystem.out.println(total+"分未達(dá)到重點(diǎn)大學(xué)錄取線");}}Example6_2.javapublicclassExample6_2{publicstaticvoidmain(Stringargs[]){doublemath=64,english=76.5,chinese=66;ImportantUniversityuniver=newImportantUniversity();univer.enterRule(math,english,chinese);//調(diào)用重寫的方法math=89;english=80;chinese=86;univer=newImportantUniversity();univer.enterRule(math,english,chinese);//調(diào)用重寫的方法}}在下面的例子3中,子類B重寫了父類的computer()方法,運(yùn)行效果如圖6.4。例子3Example6_3.javaclassA{floatcomputer(floatx,floaty){returnx+y;}publicintg(intx,inty){returnx+y;}}classBextendsA{floatcomputer(floatx,floaty){returnx*y;}}publicclassExample6_3{publicstaticvoidmain(Stringargs[]){Bb=newB();doubleresult=puter(8,9);//b調(diào)用重寫的方法System.out.println("調(diào)用重寫方法得到的結(jié)果:"+result);intm=b.g(12,8);//b調(diào)用繼承的方法System.out.println("調(diào)用繼承方法得到的結(jié)果:"+m);}}§6.4super關(guān)鍵字子類可以隱藏從父類繼承的成員變量和方法,如果在子類中想使用被子類隱藏的成員變量或方法就可以使用關(guān)鍵字super?!?.4.1使用super操作被隱藏的成員變量和方法在子類中想使用被子類隱藏的成員變量或方法就可以使用關(guān)鍵字super。比如super.x、super.play()就是訪問(wèn)和調(diào)用被子類隱藏的成員變量x和方法play()。例子4Bank.javapublicclassBank{intsavedMoney;intyear;doubleinterest;publicdoublecomputerInterest(){interest=year*0.035*savedMoney;System.out.printf("%d元存在銀行%d年的利息:%f元\n",savedMoney,year,interest);returninterest;}}ConstructionBank.javapublicclassConstructionBankextendsBank{doubleyear;publicdoublecomputerInterest(){super.year=(int)year;doubleremainNumber=year-(int)year;intday=(int)(remainNumber*1000);interest=puterInterest()+day*0.0001*savedMoney;System.out.printf("%d元存在建設(shè)銀行%d年零%d天的利息:%f元\n",savedMoney,super.year,day,interest);returninterest;}}BankOfDalian.javapublicclassBankOfDalianextendsBank{doubleyear;publicdoublecomputerInterest(){super.year=(int)year;doubleremainNumber=year-(int)year;intday=(int)(remainNumber*1000);interest=puterInterest()+day*0.00012*savedMoney;System.out.printf("%d元存在大連銀行%d年零%d天的利息:%f元\n",savedMoney,super.year,day,interest);returninterest;}}Example6_4.javapublicclassExample6_4{publicstaticvoidmain(Stringargs[]){intamount=5000;ConstructionBankbank1=newConstructionBank();bank1.savedMoney=amount;bank1.year=5.216;doubleinterest1=puterInterest();BankOfDalianbank2=newBankOfDalian();bank2.savedMoney=amount;bank2.year=5.216;doubleinterest2=puterInterest();System.out.printf("兩個(gè)銀行利息相差%f元\n",interest2-interest1);}}§6.4.2使用super調(diào)用父類的構(gòu)造方法子類不繼承父類的構(gòu)造方法,因此,子類如果想使用父類的構(gòu)造方法,必須在子類的構(gòu)造方法中使用,并且必須使用關(guān)鍵字super來(lái)表示,而且super必須是子類構(gòu)造方法中的頭一條語(yǔ)句。例子5Example6_5.javaclassStudent{intnumber;Stringname;Student(){}Student(intnumber,Stringname){this.number=number;=name;System.out.println("我的名字是:"+name+"學(xué)號(hào)是:"+number);}}classUniverStudentextendsStudent{boolean婚否;UniverStudent(intnumber,Stringname,booleanb){super(number,name);婚否=b;System.out.println("婚否="+婚否);}}publicclassExample6_5{publicstaticvoidmain(Stringargs[]){UniverStudentzhang=newUniverStudent(9901,"何曉林",false);}}§6.5final關(guān)鍵字final關(guān)鍵字可以修飾類、成員變量和方法中的局部變量?!?.5.1final類可以使用final將類聲明為final類。final類不能被繼承,即不能有子類。如:finalclassA{……}§6.5.2final方法如果用final修飾父類中的一個(gè)方法,那么這個(gè)方法不允許子類重寫。§6.5.3常量如果成員變量或局部變量被修飾為final的,就是常量。例子6Example6_6.javaclassA{finaldoublePI=3.1415926;//PI是常量publicdoublegetArea(finaldoubler){returnPI*r*r;}publicfinalvoidspeak(){System.out.println("您好,How'severythinghere?");}}publicclassExample6_6{publicstaticvoidmain(Stringargs[]){Aa=newA();System.out.println("面積:"+a.getArea(100));a.speak();}}本次課總結(jié)繼承是一種由已有的類創(chuàng)建新類的機(jī)制。子類繼承父類的成員變量。子類繼承父類的方法。子類繼承過(guò)程中可以實(shí)現(xiàn)變量隱藏與方法重寫。子類重寫或新增的方法能操作子類繼承和新聲明的成員變量,但不能直接操作隱藏的成員的變量(需使用關(guān)鍵字super操作隱藏的成員變量)。作業(yè)P114習(xí)題61題、2題、6題預(yù)習(xí)第6章6.6-6.10節(jié)

各章教學(xué)實(shí)施計(jì)劃章節(jié)題目第6章子類與繼承6.6節(jié)-6.10節(jié)學(xué)時(shí)2教學(xué)目的、要求(分了解、理解、掌握三個(gè)層次):1、掌握對(duì)象的上轉(zhuǎn)型對(duì)象,理解繼承與多態(tài)。2、掌握abstract類與abstract方法。3、了解面向抽象編程、開-閉原則。教學(xué)內(nèi)容(包括基本內(nèi)容、重點(diǎn)、難點(diǎn)):基本內(nèi)容:對(duì)象的上轉(zhuǎn)型對(duì)象繼承與多態(tài)abstract類與abstract方法面向抽象編程開-閉原則重點(diǎn)和難點(diǎn)重點(diǎn):上轉(zhuǎn)型對(duì)象和多態(tài)技術(shù)難點(diǎn):理解上轉(zhuǎn)型對(duì)象和多態(tài)技術(shù)及運(yùn)用。討論、思考題、作業(yè):P114習(xí)題63題-5題、7題預(yù)習(xí)第7章參考書目(含參考書、文獻(xiàn)等)具體內(nèi)容:參考書對(duì)應(yīng)章節(jié)

課堂教學(xué)實(shí)施計(jì)劃第8課教學(xué)過(guò)程設(shè)計(jì):復(fù)習(xí)5分鐘;授新課90分鐘討論5分鐘;其它分鐘授課類型(請(qǐng)打√):理論課√討論課□實(shí)驗(yàn)課□習(xí)題課□其它□教學(xué)方式(請(qǐng)打√):講授√討論□示教□指導(dǎo)□其它□教學(xué)手段(請(qǐng)打√):多媒體√模型□實(shí)物□掛圖□音像□其它√基本內(nèi)容:對(duì)象的上轉(zhuǎn)型對(duì)象繼承與多態(tài)abstract類與abstract方法面向抽象編程開-閉原則重點(diǎn)和難點(diǎn)重點(diǎn):上轉(zhuǎn)型對(duì)象和多態(tài)技術(shù)難點(diǎn):理解上轉(zhuǎn)型對(duì)象和多態(tài)技術(shù)及運(yùn)用。§6.6對(duì)象的上轉(zhuǎn)型對(duì)象(重點(diǎn))假設(shè),A類是B類的父類,當(dāng)用子類創(chuàng)建一個(gè)對(duì)象,并把這個(gè)對(duì)象的引用放到父類的對(duì)象中時(shí),稱對(duì)象a是對(duì)象b的上轉(zhuǎn)型對(duì)象。比如:Aa;Bb=newB();a=b上轉(zhuǎn)型對(duì)象特點(diǎn)上轉(zhuǎn)型對(duì)象不能操作子類新增的成員變量;不能調(diào)用子類新增的方法。上轉(zhuǎn)型對(duì)象可以訪問(wèn)子類繼承或隱藏的成員變量,也可以調(diào)用子類繼承的方法或子類重寫的實(shí)例方法。例子7Example6_7.javaclass類人猿{voidcrySpeak(Strings){System.out.println(s);}}classPeopleextends類人猿{voidcomputer(inta,intb){intc=a*b;System.out.println(c);}voidcrySpeak(Strings){System.out.println("***"+s+"***");}}publicclassExample6_7{publicstaticvoidmain(Stringargs[]){類人猿monkey=newPeople();//monkey是People對(duì)象的上轉(zhuǎn)型對(duì)象monkey.crySpeak("Ilovethisgame");Peoplepeople=(People)monkey;//把上轉(zhuǎn)型對(duì)象強(qiáng)制轉(zhuǎn)化為子類的對(duì)象puter(10,10);}}§6.7繼承與多態(tài)(重點(diǎn))多態(tài)性就是指父類的某個(gè)方法被其子類重寫時(shí),可以各自產(chǎn)生自己的功能行為。例子8Example6_8.javaclass動(dòng)物{voidcry(){}}class狗extends動(dòng)物{voidcry(){System.out.println("汪汪");}}class貓extends動(dòng)物{voidcry(){System.out.println("喵喵");}}publicclassExample6_8{publicstaticvoidmain(Stringargs[]){動(dòng)物animal;animal=new狗();animal.cry();animal=new貓();animal.cry();}}§6.8abstract類和abstract()方法用關(guān)鍵字abstract修飾的類稱為abstract類(抽象類)。如:abstractclassA{…}用關(guān)鍵字abstract修飾的方法稱為abstract方法(抽象方法),例如:abstractintmin(intx,inty);例子9Example6_9.javaabstractclassA{abstractintsum(intx,inty);intsub(intx,inty){returnx-y;}}classBextendsA{intsum(intx,inty){//子類必須重寫父類的sum方法returnx+y;}}publicclassExample6_9{publicstaticvoidmain(Stringargs[]){Bb=newB();intsum=b.sum(30,20);//調(diào)用重寫的方法intsub=b.sub(30,20);//調(diào)用繼承的方法System.out.println("sum="+sum);//輸出結(jié)果為sum=50System.out.println("sum="+sub);//輸出結(jié)果為sum=10}}§6.9面向抽象編程在設(shè)計(jì)一個(gè)程序時(shí),可以通過(guò)在abstract類中聲明若干個(gè)abstract方法,表明這些方法在整個(gè)系統(tǒng)設(shè)計(jì)中的重要性,方法體的內(nèi)容細(xì)節(jié)由它的非abstract子類去完成。所謂面向抽象編程,是指當(dāng)設(shè)計(jì)某種重要的類時(shí),不讓該類面向具體的類,而是面向抽象類,即所設(shè)計(jì)類中的重要數(shù)據(jù)是抽象類聲明的對(duì)象,而不是具體類聲明的對(duì)象。簡(jiǎn)單的問(wèn)題來(lái)說(shuō)明面向抽象編程的思想。比如,我們已經(jīng)有了一個(gè)Circle類,該類創(chuàng)建的對(duì)象circle調(diào)用getArea()方法可以計(jì)算圓的面積,Circle類的代碼如下:Circle.javapublicclassCircle{doubler;Circle(doubler){this.r=r;}publicdoublegetArea(){return(3.14*r*r);}}1.面向具體類的柱體類Pillar.javapublicclassPillar{Circlebottom;//bottom是用具體類Circle聲明的對(duì)象doubleheight;Pillar(Circlebottom,doubleheight){this.bottom=bottom;this.height=height;}publicdoublegetVolume(){returnbottom.getArea()*height;}}2.編寫一個(gè)抽象類Geometry抽象出圖形的本質(zhì)行為:計(jì)算面積的方法Geometry.javapublicabstractclassGeometry{publicabstractdoublegetArea();}3.面向抽象類的柱體類以下Pillar類的設(shè)計(jì)不再依賴具體類,而是面向Geometry類,即Pillar類中的bottom是用抽象類Geometry聲明的對(duì)象,而不是具體類聲明的對(duì)象。重新設(shè)計(jì)的Pillar類的代碼如下:Pillar.javapublicclassPillar{Geometrybottom;//bottom是抽象類Geometry聲明的對(duì)象doubleheight;Pillar(Geometrybottom,doubleheight){this.bottom=bottom;this.height=height;}publicdoublegetVolume(){returnbottom.getArea()*height;//bottom可以調(diào)用子類重寫的getArea方法}}4.Geometry的子類下列Circle和Rectangle類都是Geometry的子類,二者都必須重寫Geometry類的getArea()方法來(lái)計(jì)算各自的面積。Circle.javapublicclassCircleextendsGeometry{

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論