版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1,本章主要介紹以下幾個問題,1. Java語言的繼承 2. Java語言的多態(tài) 3. Java方法的重載 4. 構造函數(shù)的繼承與重載 5. Java語言的包 6. Java語言的接口,2,第五章 繼承與多態(tài),5.1 繼承 1. 繼承和多態(tài)是面向對象程序設計的兩個重要特點。繼承是面向對象程序設計方法的一個重要手段,通過繼承可以更有效地組織程序結構,明確類間的關系,充分利用已有的類來完成更復雜、更深入的開發(fā),3,第五章 繼承與多態(tài),5.1 繼承 2. 當一個類擁有另一個類的所有數(shù)據(jù)和操作時,就稱這兩個類之間存在著繼承關系。被繼承的類稱為父類或超類,繼承了父類的所有數(shù)據(jù)和操作的類就為子類。 3.
2、一個父類可以同時擁有多個子類,此時父類實際是所有子類的公共域和公共方法的集合;而每一個子類則是父類的特殊化,是對父類公共域和方法在功能、內涵方面的擴展和延伸,4,第五章 繼承與多態(tài),5.1 繼承 4. 單重繼承是指任何一個類都只有一個單一的父類,其結構可以用單純的樹狀結構來表示;若一個類有一個以上的父類則稱為多重繼承。其結構應以復雜的網(wǎng)狀結構來表示。Java語言僅支持單重繼承。 5. 在面向對象的程序設計中,采用繼承的方式來組織設計系統(tǒng)中的類,可以提高程序的抽象程度,更接近人的思維方式,使程序結構更清晰并降低編碼和維護的工作量,5,第五章 繼承與多態(tài),5.2 Java的繼承 5.2.1 派生子
3、類 1. Java語言中類的繼承是通過類定義的 extends關鍵字來實現(xiàn)的。即關鍵字指明了新定義類的父類,從而建立了兩個類之間的繼承關系,新定義的類是子類,它繼承了父類所有非 private的屬性和方法作為自己的成員。 2. 分析圖5-1和例5-1電話卡類的繼承結構,6,第五章 繼承與多態(tài),5.2.2 域的繼承與隱藏 1. 域的繼承是指子類可以繼承父類的所有非私有域。 分析例5-1??梢姡焊割惖乃蟹撬接杏驅嶋H是各個子類所擁有的域的集合。 2. 子類重新定義一個與從父類那里繼承來的域變量完全相同的變量,稱為域的隱藏,7,第五章 繼承與多態(tài),5.2.2 域的繼承與隱藏 3. 域的隱藏是指子類擁
4、有了兩個相同名字的變量,其中 一個來自于父類,另一個由自己定義。 4. 當子類執(zhí)行來繼承自父類的操作時,處理的是繼承父類的變量,而當子類執(zhí)行它自己定義的方法時,所操作的就是它自己定義的變量,而把繼承來自父類的變量“隱藏”起來。 5. 例5-2,8,第五章 繼承與多態(tài),5.2.3 方法的繼承與覆蓋 1. 方法的繼承:方法的繼承是指父類的非私有方法也可以被子類繼承。例5-2。 2. 方法的覆蓋:是指子類也可以重新定義與父類同名的方法,實現(xiàn)對父類的覆蓋。子類在重新定義父類已有的方法時應保持與父類完全相同的方法名、返回值和參數(shù)列表,否則就不是方法的覆蓋,9,第五章 繼承與多態(tài),5.2.3 方法的繼承與
5、覆蓋 3. 方法的覆蓋與域的隱藏的區(qū)別在于:子類隱藏父類的域是使父類的域不可見,而父類的同名域在子類的對象中仍然占有獨立的內存空間;而子類方法對父類同名方法的覆蓋將清除父類方法在內存所占用的空間,從而使父類方法在子類的對象中不復存在。 4. 例5-3,10,第五章 繼承與多態(tài),5.2.4 this和super 1. Java系統(tǒng)默任:每個類都缺省地具有 null、this 和 super 三個域,可以在任意類中不加說明地直接使用這三個域。 2. null 代表“空”值,在定義一個對象但尚未為其開辟內存空間時,可以指定這個對象為 null,11,第五章 繼承與多態(tài),5.2.4 this和supe
6、r 3. this 表示的是當前對象本身,它實際代表了當前對象的一個引用。一個對象可以有若干個引用,this 只是其中的一個。 4. 例5-4。 5. super 表示的是當前對象的直接父類對象,是對直接父類對象的引用。 6. 例5-5,12,第五章 繼承與多態(tài),5.2.4 this和super 7. 直接父類 例如:A類派生出 B類,B類派生出C類,那么B是C的 “直接父類”;A是C的 “祖先類”。 同理:Number_PhoneCard 類是D200_Card 類的 “直接父類” ,PhoneCard 類是 D200_Card 類的 “祖先類,13,第五章 繼承與多態(tài),5.2.4 this
7、和super 8. 父類對象與子類對象的轉換 (1)子類對象可以被視為是其父類的一個對象。 (2)父類對象不能被當作是某一個子類的對象,14,第五章 繼承與多態(tài),5.2.4 this和super 8. 父類對象與子類對象的轉換 (3)如果一個方法的形式參數(shù)定義的是父類對象,那么調用這個方法時,可以使用子類對象作為實際參數(shù)。 (4)如果父類對象與引用指向的實際是一個子類對象,那么這個父類對象的引用可以用強制類型轉換轉化成子類對象的引用。 9. p102 程序片段,15,第五章 繼承與多態(tài),5.3 多態(tài) 1. 多態(tài)是指一個程序中,同名的不同方法共存的情況 2. 多態(tài)可通過子類對父類方法的覆蓋實現(xiàn)多
8、態(tài),也可以利用重載在同一個類中定義多個同名的不同方法實現(xiàn)多態(tài)。 3. 方法的重載(同一個類),方法的覆蓋(父類和子類),域的隱藏(父類和子類,16,第五章 繼承與多態(tài),5.4 Java的重載 1. 方法的重載是實現(xiàn)Java語言多態(tài)技術的重要手段。 2. 方法的重載與方法的覆蓋不同,方法的重載不是子類對父類同名方法的重新定義,而是同一類中若干同名方法的重新定義。 3. 例5-6,17,第五章 繼承與多態(tài),5.5 構造函數(shù)的繼承與重載 5.5.1 構造函數(shù)的重載 1. 構造函數(shù)的主要功能是完成對類對象的初始化操作。當類對象創(chuàng)建時,系統(tǒng)根據(jù)實參自動調用該類相應的構造函數(shù)初始化該對象。 2. 構造函數(shù)
9、的重載是指在同一個類中存在若干個具有不同參數(shù)列表的構造函數(shù)。 3. P107頁代碼片斷,18,第五章 繼承與多態(tài),5.5.1 構造函數(shù)的重載 4. 當一個構造函數(shù)需要調用另一個構造函數(shù)時,可以使用關鍵字this,同時這個調用語句應該是整個構造函數(shù)的第一個可執(zhí)行語句。 5. P108頁代碼片斷,19,第五章 繼承與多態(tài),5.5.2 構造函數(shù)的繼承 1. 子類無條件地繼承父類不含參數(shù)的構造函數(shù)。 2. 如果子類自己定義了構造函數(shù),則在創(chuàng)建新對象時,它將先執(zhí)行繼承自父類不含參數(shù)的構造函數(shù),然后再執(zhí)行自己的構造函數(shù),20,第五章 繼承與多態(tài),5.5.2 構造函數(shù)的繼承 3. 對于父類含參數(shù)的構造函數(shù),
10、子類可以通過在自己的構造函數(shù)中使用關鍵字 super 來調用它,但是這個調用語句必須是子類構造函數(shù)的第一個可執(zhí)行語句。 4. 分析 p109代碼片斷。 5. 例5-7,21,第五章 繼承與多態(tài),5.6 包 5.6.1 創(chuàng)建包 系統(tǒng)自動建立“無名包”:在缺省情況下,系統(tǒng)會為每一個.java 源文件中定義的所有類創(chuàng)建一個“無名包”,在包內可以相互引用非 private 的域或方法。但是由于“無名包”沒有包名,所以“無名包”中的類不能被其它包中的類所引用,為此應該創(chuàng)建有名包,22,第五章 繼承與多態(tài),5.6.1 創(chuàng)建包 2. 創(chuàng)建有名包的語句格式為 package ; 語句功能:該語句將創(chuàng)建一個具有
11、指定名字的包,該包將把當前. Java 文件中的所有類集合到這個包內。 例如:package CardClasses 該語句是在當前文件夾下創(chuàng)建一個名為CardClasses 的子文件夾包,23,第五章 繼承與多態(tài),5.6.1 創(chuàng)建包 又如: package CardSystem.CardClasses 該語句是在當前文件夾下創(chuàng)建了兩個文件夾, 第一個是在當前文件夾下的子文件夾 CardSystem; 第二個是在CardSystem 下的子文件夾 CardClasses, 當前包中的所有類均存放在這個文件夾里。 3. P114頁的代碼片斷,24,第五章 繼承與多態(tài),5.6.2 包的引用 1.
12、通常一個類只能引用與它在同一個包中的類。若需要引用其它包中的 public 類,可以采用以下幾種方法。 (1)使用包名、類名作為前綴。 (2)加載需要使用的類。 如import CardClasses.D200_Card; (3)加載整個包。如import CardClasses.*; (4)使用環(huán)境變量 CLASSPATH,25,第五章 繼承與多態(tài),5.7 接口 5.7.1 接口概述 1. Java語言的接口是用來實現(xiàn)類間多重繼承功能的結構。它定義了若干個抽象方法和常量用以實現(xiàn)多重繼成的功能。 2. Java語言不支持多重繼承,只支持單重繼承(只有一個直接父類)。為了使Java程序的類層次結
13、構更加合理,更符合實際問題的需要,我們把用于完成特定功能的若干屬性組織成相對獨立的屬性集合。這種屬性的集合就是接口,26,第五章 繼承與多態(tài),5.7.1 接口概述 3. 如前面圖形界面程序中使用的ActionListener就是系統(tǒng)定義的接口,它代表了監(jiān)聽并處理動作事件的功能,其中包含了一個抽象方法: public void actionPerformed(ActionEvent e); 4. 所有需要處理動作事件的類(如單擊按鈕、在文本框中回車等)都必須具有ActionListener接口定義的功能。具體的說,就是必須實現(xiàn)這個接口,覆蓋actionPerformed()方法,27,第五章 繼
14、承與多態(tài),5.7.2 聲明接口 1. 接口的聲明格式:包括接口頭和接口體兩部分 public interface 接口名extends 父接口名表 publicstaticfinal 域類型 域名=常量值; publicabstractnative 返回值 方法名(參數(shù)列表)throw異常列表,28,第五章 繼承與多態(tài),5.7.2 聲明接口 2. 接口是一種特殊的類,它是由常量和抽象方法組成的特殊類。一個類只能有一個父類,但可以同時實現(xiàn)若干個接口。 3. interface 是接口定義的關鍵字。 public接口可以被任意的類和接口使用,沒有public修飾的接口則只能被同一個包中的其它類和接
15、口利用,29,第五章 繼承與多態(tài),5.7.2 聲明接口 4. 接口也有繼承性。定義接口時可以通過關鍵字 extends 說明當前定義的接口與哪個接口具有繼承關系,當前接口將繼承父接口所有的屬性和方法。在此一個接口可以有多個父接口,它們之間用逗號分隔,形成父借口列表。 5. 接口體的定義很重要,接口體由兩部分組成,即域的定義和方法的定義兩部分,30,第五章 繼承與多態(tài),5.7.2 聲明接口 6. 接口中的域都必須是public static final,無論是否顯示地說明;接口中的方法都必須是public abstract,無論是否顯示地說明。 7. Java系統(tǒng)類庫中定義了很多接口,如接口DataInput 中定義了大量按數(shù)據(jù)類型讀取數(shù)據(jù)的方法,31,第五章 繼承與多態(tài),5.7.3 實現(xiàn)接口 1. Java聲明的接口僅僅給出了抽象方法,而具體地實現(xiàn)接口所規(guī)定的功能,還須一個類為接口中的抽象方法定義實在的方法體,即實現(xiàn)接口。 2. 類實現(xiàn)接口注意的問題。 (1)在類的聲明(定義)部分用implements 關鍵字說明該類將要實現(xiàn)那些接口,32
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年哈爾濱貨運從業(yè)資格考試模擬考試題庫答案解析
- 2024年委托反擔保合同模板-項目投資風險控制協(xié)議3篇
- 2025年沈陽貨運從業(yè)資格證考試題答案大全
- 高端商務年終總結工作匯報述職報告模板27
- 2024年特色農(nóng)產(chǎn)品線上線下銷售合同
- 《團隊與沖突》課件
- 《卸料平臺制作及使》課件
- 2024外派海員聘用合同:船舶教育與培訓員工范本3篇
- 2024年度數(shù)字貨幣私人合伙股權分配與交易平臺協(xié)議3篇
- 2024年度新能源出租車司機聘用服務協(xié)議3篇
- 《森林防火安全教育》主題班會 課件
- 漏洞修復策略優(yōu)化
- 手術安全培訓
- 乘風化麟 蛇我其誰 2025XX集團年終總結暨頒獎盛典
- 車間生產(chǎn)現(xiàn)場5S管理基礎知識培訓課件
- 文書模板-《公司與村集體合作種植協(xié)議書》
- 碼頭安全生產(chǎn)知識培訓
- 《死亡詩社》電影賞析
- JJF(京) 105-2023 網(wǎng)絡時間同步服務器校準規(guī)范
- 老年科護理查房護理病歷臨床病案
- 工程系列自然資源行業(yè)級評審專家?guī)斐蓡T表
評論
0/150
提交評論