資源描述:
《面向?qū)ο缶幊?8繼承和多態(tài)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、第四章面向?qū)ο缶幊瘫菊轮饕獌?nèi)容4.1簡(jiǎn)介4.2面向?qū)ο蟮幕靖拍?.3面向?qū)ο蟮幕菊Z(yǔ)法4.4類和包4.5類的方法4.6對(duì)象4.7繼承和多態(tài)4.8接口和抽象類4.9面向?qū)ο箝_發(fā)概念定義類的方法的步驟是什么?類中的一個(gè)方法如何調(diào)用類的另一個(gè)方法?類中的一個(gè)方法如何調(diào)用另一個(gè)類的方法?分別說(shuō)明成員變量和局部變量的作用域。如何給類的方法添加JavaDoc注釋?課程回顧本章目標(biāo)掌握繼承掌握super關(guān)鍵字掌握多態(tài)4.6繼承和多態(tài)計(jì)算機(jī)語(yǔ)言設(shè)計(jì)猶如在公園里漫步。我是說(shuō)侏羅紀(jì)公園?!狶arryWall(Perl語(yǔ)言之父)生活中的繼承生活中,繼承的
2、例子隨處可見動(dòng)物食草動(dòng)物食肉動(dòng)物誰(shuí)是父類?誰(shuí)是子類?能說(shuō)出繼承的特點(diǎn)嗎?繼承需要符合的關(guān)系:is-a,父類更通用、子類更具體生活中的繼承子類具有父類的一般特性(包括屬性和行為),以及自身特殊的特性巴士是汽車嗎?卡車是汽車嗎?出租車是汽車嗎?最大載客數(shù)量報(bào)站引擎數(shù)量外觀顏色剎車加速汽車最大載重量卸貨所屬公司最大載客數(shù)量打發(fā)票屬性行為請(qǐng)問:出租車包含哪些屬性和行為呢?4.6.1類和類的繼承類的設(shè)計(jì)其實(shí)是對(duì)現(xiàn)有世界的模仿在繼承中,一般常見的有屬性繼承,屬性隱藏,方法繼承,方法覆蓋,方法重載等技術(shù)。在Java語(yǔ)言中,用extends關(guān)鍵字來(lái)表示
3、一個(gè)類繼承了另一個(gè)類在父類中只定義一些通用的屬性與方法子類自動(dòng)繼承父類的屬性和方法,子類中可以定義特定的屬性和方法子類的構(gòu)造方法中,通過super關(guān)鍵字調(diào)用父類的構(gòu)造方法方法重寫后,通過super關(guān)鍵字調(diào)用父類的方法在Java中,所有的Java類都直接或間接地繼承了java.lang.Object類如何實(shí)現(xiàn)繼承3-1在Java語(yǔ)言中,用extends關(guān)鍵字來(lái)表示一個(gè)類繼承了另一個(gè)類,例如:publicclassWomanextendsHuman{//其余代碼省略}在父類中只定義一些通用的屬性與方法,例如:publicclassHuman
4、{privateStringname;privateStringschool;publicHuman(Stringname,Stringsex,intage){//初始化屬性值}publicvoidcanEat(){}publicvoidbreath(){}}如何實(shí)現(xiàn)繼承3-2子類自動(dòng)繼承父類的屬性和方法,子類中可以定義特定的屬性和方法publicclassHuman{privateStringname;//教員姓名privateStringsex;//所在中心publicHuman(StringmyName,StringmySex){
5、//初始化屬性值}publicvoidsayHello(){//方法的具體實(shí)現(xiàn)}}publicclassFatherextendsHuman{publicFather(StringmyName,StringmySex){super(myName,mySex);}publicvoidsayHello(){System.out.println(“你好,我是爸爸");super.sayHello();}}由于sayHello()方法與父類的實(shí)現(xiàn)有所不同,因此重寫了該方法方法重寫:子類和父類的方法具有相同的名稱、參數(shù)列表、返回類型父類中的屬性和
6、方法可以被子類繼承publicclassFatherextendsHuman{publicFather(StringmyName,StringmySex){super(myName,mySex);}}如何實(shí)現(xiàn)繼承3-3子類的構(gòu)造方法中,通過super關(guān)鍵字調(diào)用父類的構(gòu)造方法方法重寫后,通過super關(guān)鍵字調(diào)用父類的方法publicclassFatherextendsHuman{publicvoidsayHello(){System.out.println(“你好,我是爸爸");super.sayHello();}}通過調(diào)用父類的構(gòu)造方法
7、,完成對(duì)屬性值的初始化一切類的“祖先”——Object在Java中,所有的Java類都直接或間接地繼承了java.lang.Object類publicclassMyObject{//…}publicclassMyObectextendsObject{//…}在Eclipse中調(diào)用MyObject對(duì)象的成員,會(huì)自動(dòng)彈出繼承自O(shè)bject的所有方法4.6.1類和類的繼承函數(shù)的覆蓋和重載的區(qū)別4.6.1類和類的繼承重載的情況下,子類的訪問權(quán)限比父類要大。參看課本例4.15Man類:用于測(cè)試Man類的程序:為什么需要多態(tài)5-1在Woman/Ma
8、n類的基礎(chǔ)上,開發(fā)一個(gè)類用來(lái)判斷,負(fù)責(zé)對(duì)Woman、Man中的方法進(jìn)行判斷:1、打招呼為什么需要多態(tài)5-2第一種解決方案publicclassJudge{publicvoidjudge(Manman){ma