資源描述:
《Java培訓教程-繼承和多態(tài).docx》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、1.1繼承的作用繼承是java面向?qū)ο蟮娜筇卣髦?,繼承可以解決編程中代碼冗余的問題,是實現(xiàn)代碼重用的重要手段之一。繼承是軟件可重用性的一種表現(xiàn),新類可以在不增加自身代碼的情況下,通過從現(xiàn)在的類中繼承其屬性和方法,來充實自身內(nèi)容,這種現(xiàn)象或行為就成為繼承。這時候新類就稱為子類,現(xiàn)有的類稱為父類。說一說如下兩個類有什么問題?如何優(yōu)化?講解思路:采用提問的方式和學生互動,可以讓學生動起腦來,為后期學生們掌握繼承做鋪墊。由圖可以很直觀的看出兩個類有的屬性和方法是相同的?!な褂美^承修改后通過上面的形式,可以減少代碼量,方便修改代碼。
2、1.2使用繼承定義寵物類1)編寫父類[訪問修飾符]classpet{//公共的屬性和方法}2)編寫子類,繼承父類[訪問修飾符]classDogextendsPet{//子類特有的屬性和方法}總結(jié):繼承是java實現(xiàn)代碼重要的重要手段之一。Java中只支持單根繼承,即一個類只能有一個直接父類。針對上述的案例,讓學生們自己動手寫一遍,并編寫測試案例。提問:上述案例中,如Dog類或者Penguin需要和Pet類的print()方法有不同的實現(xiàn),怎么辦?子類重寫父類的方法即可(方法重寫:在子類中根據(jù)需求對父類繼承的方法進行重新編寫)注
3、:重寫方法和被重寫方法必須具有相同的方法名和參數(shù)列表重寫方法的返回值類型必須和被重寫方法的返回值類型相同或者是其子類重寫方法的不能縮小被重寫方法的訪問權(quán)限。升級上述案例:在Dog類以及Penguin類中重寫父類Pet類的print():類的print()需要分別輸出Dog的品種與Penguin的性別編寫測試類。講解需求,采用記事本給學員們打一個具體的模板,提示學員實現(xiàn)思路。提問:方法重寫與方法重載的區(qū)別?答案:重寫是指子類繼承父類,子類里重新編寫了父類中的同名(同參數(shù))方法,也就是覆蓋了父類的方法。(一般情況指抽象的父類方法)
4、重載是:指在一個類里,方法名相同(返回類型也要相同),參數(shù)不同(參數(shù)個數(shù)不同,或者參數(shù)類型部同);提問:在上述案例中,Dog或Penguin如何訪問Pet的成員?訪問父類構(gòu)造方法super(參數(shù));訪問父類屬性或方法super.屬性名/方法名();super關(guān)鍵字和this關(guān)鍵字的作用類似,都是將被屏蔽了的成員變量、成員方法變?yōu)榭梢娍捎谩uper用在子類中,訪問直接父類中的被屏蔽的內(nèi)容,進一步提高代碼的重用性和靈活性。super關(guān)鍵字不僅可以訪問父類的構(gòu)造方法,還可以訪問父類的成員,包括父類的屬性、一般方法等,無法通過sup
5、er訪問private成員1.3Object類Object類是所有類的父類,Object類被子類經(jīng)常重寫的方法以下是Object類的部分方法:方法說明toString()返回當前對象本身的有關(guān)信息,按字符串對象返回equals()比較兩個對象是否是同一個對象,是則返回truehashCode()返回該對象的哈希代碼值getClass()獲取當前對象所屬的類信息,返回Class對象equals()方法,在java.lang.String類重寫了Object類中的一種。1.4實現(xiàn)多態(tài)的表現(xiàn)形式1.4.1認識多態(tài)多態(tài)一詞的通常含義是
6、指能夠呈現(xiàn)出多種不同的形式或形態(tài),而在程序設(shè)計的術(shù)語中,它意味這一個特定類型的變量可以引用不同類型的對象,并且能夠自動地調(diào)節(jié)引用的對象的方法。1.4.2構(gòu)造方法執(zhí)行順利:升級案例:需求:升級前一個上機練習,在Dog類以及Penguin類中使用super調(diào)用父類Pet類的成員子類的print()需要分別輸出Dog與Penguin的各種屬性信息編寫測試類講解思路:根據(jù)之前學的類與對象,訪問一個類的屬性和方法時要先創(chuàng)建一個對象,然后采用對象.屬性,對象.方法的方式去訪問。那么在這里也是同樣的道理。提問:1)代碼輸出什么?classA
7、{publicA(){System.out.println("父類的構(gòu)造方法");}}publicclassBextendsA{publicB(){System.out.println("子類的構(gòu)造方法");}publicstaticvoidmain(String[]args){Bb=newB();}}答案:先輸出:父類的構(gòu)造方法然后輸出:子類的構(gòu)造方法。知識點:在執(zhí)行子類時,先執(zhí)行父類的構(gòu)造方法,再執(zhí)行子類的構(gòu)造方法,是構(gòu)造方法不需要調(diào)用,可以直接執(zhí)行。2)提問:如下主人類中給寵物看病的方法,如果又需要給XXX寵物看病,怎么
8、辦?//給狗看病publicvoidcure(Dogdog){if(dog.getHealth()<50){dog.setHealth(60);System.out.println("打針、吃藥");}}//給企鵝看病publicvoidcure(Penguinpenguin