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