資源描述:
《本章主要介紹以下幾個(gè)問題》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、本章主要介紹以下幾個(gè)問題1.Java語言的繼承2.Java語言的多態(tài)3.Java方法的重載4.構(gòu)造函數(shù)的繼承與重載5.Java語言的包6.Java語言的接口第五章繼承與多態(tài)5.1繼承1.繼承和多態(tài)是面向?qū)ο蟪绦蛟O(shè)計(jì)的兩個(gè)重要特點(diǎn)。繼承是面向?qū)ο蟪绦蛟O(shè)計(jì)方法的一個(gè)重要手段,通過繼承可以更有效地組織程序結(jié)構(gòu),明確類間的關(guān)系,充分利用已有的類來完成更復(fù)雜、更深入的開發(fā)。第五章繼承與多態(tài)5.1繼承2.當(dāng)一個(gè)類擁有另一個(gè)類的所有數(shù)據(jù)和操作時(shí),就稱這兩個(gè)類之間存在著繼承關(guān)系。被繼承的類稱為父類或超類,繼承了父類的所有數(shù)據(jù)和操作的類就為子類。3.一個(gè)父類可以同時(shí)擁有多個(gè)子類,此時(shí)父類
2、實(shí)際是所有子類的公共域和公共方法的集合;而每一個(gè)子類則是父類的特殊化,是對(duì)父類公共域和方法在功能、內(nèi)涵方面的擴(kuò)展和延伸。第五章繼承與多態(tài)5.1繼承4.單重繼承是指任何一個(gè)類都只有一個(gè)單一的父類,其結(jié)構(gòu)可以用單純的樹狀結(jié)構(gòu)來表示;若一個(gè)類有一個(gè)以上的父類則稱為多重繼承。其結(jié)構(gòu)應(yīng)以復(fù)雜的網(wǎng)狀結(jié)構(gòu)來表示。Java語言僅支持單重繼承。5.在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,采用繼承的方式來組織設(shè)計(jì)系統(tǒng)中的類,可以提高程序的抽象程度,更接近人的思維方式,使程序結(jié)構(gòu)更清晰并降低編碼和維護(hù)的工作量。第五章繼承與多態(tài)5.2Java的繼承5.2.1派生子類1.Java語言中類的繼承是通過類定義的ex
3、tends關(guān)鍵字來實(shí)現(xiàn)的。即關(guān)鍵字指明了新定義類的父類,從而建立了兩個(gè)類之間的繼承關(guān)系,新定義的類是子類,它繼承了父類所有非private的屬性和方法作為自己的成員。2.分析圖5-1和例5-1電話卡類的繼承結(jié)構(gòu)。第五章繼承與多態(tài)5.2.2域的繼承與隱藏1.域的繼承是指子類可以繼承父類的所有非私有域。分析例5-1??梢姡焊割惖乃蟹撬接杏?qū)嶋H是各個(gè)子類所擁有的域的集合。2.子類重新定義一個(gè)與從父類那里繼承來的域變量完全相同的變量,稱為域的隱藏。第五章繼承與多態(tài)5.2.2域的繼承與隱藏3.域的隱藏是指子類擁有了兩個(gè)相同名字的變量,其中一個(gè)來自于父類,另一個(gè)由自己定義。4.當(dāng)
4、子類執(zhí)行來繼承自父類的操作時(shí),處理的是繼承父類的變量,而當(dāng)子類執(zhí)行它自己定義的方法時(shí),所操作的就是它自己定義的變量,而把繼承來自父類的變量“隱藏”起來。5.例5-2。第五章繼承與多態(tài)5.2.3方法的繼承與覆蓋1.方法的繼承:方法的繼承是指父類的非私有方法也可以被子類繼承。例5-2。2.方法的覆蓋:是指子類也可以重新定義與父類同名的方法,實(shí)現(xiàn)對(duì)父類的覆蓋。子類在重新定義父類已有的方法時(shí)應(yīng)保持與父類完全相同的方法名、返回值和參數(shù)列表,否則就不是方法的覆蓋。第五章繼承與多態(tài)5.2.3方法的繼承與覆蓋3.方法的覆蓋與域的隱藏的區(qū)別在于:子類隱藏父類的域是使父類的域不可見,而父類
5、的同名域在子類的對(duì)象中仍然占有獨(dú)立的內(nèi)存空間;而子類方法對(duì)父類同名方法的覆蓋將清除父類方法在內(nèi)存所占用的空間,從而使父類方法在子類的對(duì)象中不復(fù)存在。4.例5-3。第五章繼承與多態(tài)5.2.4this和super1.Java系統(tǒng)默任:每個(gè)類都缺省地具有null、this和super三個(gè)域,可以在任意類中不加說明地直接使用這三個(gè)域。2.null代表“空”值,在定義一個(gè)對(duì)象但尚未為其開辟內(nèi)存空間時(shí),可以指定這個(gè)對(duì)象為null。第五章繼承與多態(tài)5.2.4this和super3.this表示的是當(dāng)前對(duì)象本身,它實(shí)際代表了當(dāng)前對(duì)象的一個(gè)引用。一個(gè)對(duì)象可以有若干個(gè)引用,this只是其中
6、的一個(gè)。4.例5-4。5.super表示的是當(dāng)前對(duì)象的直接父類對(duì)象,是對(duì)直接父類對(duì)象的引用。6.例5-5。第五章繼承與多態(tài)5.2.4this和super7.直接父類例如:A類派生出B類,B類派生出C類,那么B是C的“直接父類”;A是C的“祖先類”。同理:Number_PhoneCard類是D200_Card類的“直接父類”,PhoneCard類是D200_Card類的“祖先類”。第五章繼承與多態(tài)5.2.4this和super8.父類對(duì)象與子類對(duì)象的轉(zhuǎn)換(1)子類對(duì)象可以被視為是其父類的一個(gè)對(duì)象。(2)父類對(duì)象不能被當(dāng)作是某一個(gè)子類的對(duì)象。第五章繼承與多態(tài)5.2.4thi
7、s和super8.父類對(duì)象與子類對(duì)象的轉(zhuǎn)換(3)如果一個(gè)方法的形式參數(shù)定義的是父類對(duì)象,那么調(diào)用這個(gè)方法時(shí),可以使用子類對(duì)象作為實(shí)際參數(shù)。(4)如果父類對(duì)象與引用指向的實(shí)際是一個(gè)子類對(duì)象,那么這個(gè)父類對(duì)象的引用可以用強(qiáng)制類型轉(zhuǎn)換轉(zhuǎn)化成子類對(duì)象的引用。9.p102程序片段第五章繼承與多態(tài)5.3多態(tài)1.多態(tài)是指一個(gè)程序中,同名的不同方法共存的情況2.多態(tài)可通過子類對(duì)父類方法的覆蓋實(shí)現(xiàn)多態(tài),也可以利用重載在同一個(gè)類中定義多個(gè)同名的不同方法實(shí)現(xiàn)多態(tài)。3.方法的重載(同一個(gè)類),方法的覆蓋(父類和子類),域的隱藏(父類和子類)。第五章繼承與多態(tài)5.