




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、繼承,1/38,本章目標,掌握繼承的優點和實現 掌握子類重寫父類方法 掌握繼承下構造方法的執行過程 掌握抽象類和抽象方法的使用 掌握final修飾屬性、方法和類,2/38,為什么使用繼承 2-1,這兩個類圖有什么問題?,3/38,將重復代碼 抽取到父類中,問題,使用繼承優化設計,為什么使用繼承 2-2,使用繼承優化后:,4/38,減少代碼量,方便修改代碼,子類與父類是is-a關系,如何使用繼承,使用繼承 編寫父類 編寫子類,繼承父類,5/38,class Pet /公共的屬性和方法 ,class Dog extends Pet /子類特有的屬性和方法 ,class Penguin extend
2、s Pet ,只能繼承一個父類,繼承關鍵字,理解繼承4-1,子類訪問父類成員 訪問父類構造方法 訪問父類屬性 訪問父類方法,6/38,使用super關鍵字, super代表父類對象,;,super.print();,super(); super(name);,在子類構造方法中調用且必須是第一句,理解繼承4-2,子類可以繼承父類的所有些資源嗎?,7/38,提問,構造方法,子類與父類不在同包, 使用默認訪問權限的成員,private成員,不能被繼承的父類成員,理解繼承4-3,訪問修飾符protected 可以修飾屬性和方法 本類、同包、子類可以訪問 訪問修飾符總結,8/38,理
3、解繼承4-4,多重繼承關系的初始化順序是怎樣的?,9/38,子類構造 方法,子類屬性,父類構造 方法,父類屬性,提問,在何處使用繼承,何時使用繼承? 繼承與真實世界類似 只要說“貓是哺乳動物”,貓的很多屬性、行為 就不言自明了 藏獒是一種狗 繼承是代碼重用的一種方式,10/38,將子類共有的屬性和行為放到父類中,符合is-a關系的設計使用繼承,問題,小結2-1,繼承使用什么關鍵字? 子類可以繼承父類的哪些成員? 使用繼承有什么好處?,11/38,提問,小結2-2,閱讀代碼,說出運行結果,12/38,class Car private int site = 4; /座位數 Car() Syste
4、m.out.println (載客量是+site+人); public void setSite(int site) this.site = site; void print() System.out.print(載客量是+site+人); ,class Bus extends Car Bus(int site) setSite(site); ,public static void main(String args) Bus bus = new Bus(20); bus.print(); ,載客量是4人 載客量是20人,代碼閱讀,方法重寫,使用繼承后效果,13/38,子類重寫父類方法,問題,調
5、用父類的print()方法,不能顯示Dog的strain信息和Peguin的sex信息,如何實現如下效果呢?,小結2-1,構造方法也會被重寫嗎? 方法重寫的規則 方法名相同 參數列表相同 返回值類型相同或者是其子類; 訪問權限不能嚴于父類 方法重載與方法重寫,14/38,提問,不能被繼承, 因此不能重寫,小結2-2,super關鍵字來訪問父類的成員 super只能出現在子類的方法和構造方法中 super調用構造方法時,只能是第一句 super不能訪問父類的private成員,15/38,操作優化電子寵物系統2-1,訓練要點: 繼承 子類重寫父類方法 理解繼承中的初始化過程 需求說明: 優化電子
6、寵物系統 使用繼承實現Dog類和Penguin類 打印寵物信息,16/38,指導,操作優化電子寵物系統2-2,實現思路:,17/38,繼承,指導,抽象類,以下代碼有什么問題? Java中使用抽象類,限制實例化,18/38,Pet pet = new Pet (貝貝,20,40); pet.print();,實例化Pet沒有意義,public abstract class Pet ,問題,抽象方法,以下代碼有什么問題? abstract也可用于方法抽象方法 抽象方法沒有方法體 抽象方法必須在抽象類里 抽象方法必須在子類中被實現,除非子類是抽象類,19/38,public abstract voi
7、d print();,沒有方法體,public abstract class Pet public void print() / ,每個子類的實現不同,問題,操作抽象Pet類2-1,訓練要點: 抽象類的定義和繼承 抽象方法定義和重寫 需求說明: 修改Pet類為抽象類 修改Pet類的print()方法為抽象方法 輸出Dog信息,20/38,指導,操作抽象Pet類2-2,實現思路 修改Pet類為抽象類,修改print()為抽象方法 Dog類繼承Pet類,實現print()方法 運行測試 注釋掉Dog類中print()方法,運行測試類查看錯誤信息 編寫注釋,21/38,指導,final用法,Peng
8、uin類不希望再被其他類繼承? 使用final類 方法不希望被重寫? 使用final方法 屬性值不希望被修改? 使用常量,22/38,public final class Penguin extends Pet / ,最終版的類,public final void print () / ,最終版的方法,public class Penguin final String home =南極;/ 居住地 public void setHome(String name) this.home=home; /錯誤,不可再賦值 ,最終版的屬性值,問題,常見錯誤,請指出下面代碼的錯誤,23/38,class
9、Dog String name; public Dog(String name) = name; class Test public static void main(String args) final Dog dog = new Dog(歐歐); = 美美; dog = new Dog(亞亞); ,使用final修飾引用型變量, 變量不可以再指向另外的對象,使用final修飾引用型變量,變量的值是固定不變的, 而變量所指向的對象的屬性值是可變的,綜合案例,某汽車租賃公司出租多種車輛,車型及租金情況如下: 編寫程序實現計算租賃價,24/38,問題,總結2-1,繼承 符合is-a關系 使用extends關鍵字 代碼復用 方法重寫的規則 方法名相同 參數列表相同 返回值類型相同或者是其子類 訪問權限不能嚴于父類 super關鍵字來訪問父類的成員 super只能出現在子類的方法和構造方法中 super調用構造方法時,只能是第一句 super不能訪問子類的private成
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 猴頭健胃靈片臨床應用專家共識
- 恒源祥(集團)有限公司2021年度社會責任報告
- 內科護理說課:代謝性疾病
- 車輛運輸安全責任協議書
- 2025年軟件及服務項目規劃申請報告
- 護理設備質控體系實施要點
- 中醫與五行的關系
- 華鎣公招面試題及答案
- 八年級地理試題及答案
- 2025合同范本臨時租賃合同示例
- JY-T 0466-2015 小學體育器材設施配備標準
- 2023分布式光伏電站安裝作業指導書
- 成人呼吸支持治療器械相關壓力性損傷的預防
- 蛛網膜下腔出血病人護理查房
- 石英砂過濾器出廠檢驗報告
- 北師大版數學五年級下冊期末整理與復習課件
- 建筑裝飾、裝修工程質量通病防治手冊(現象、原因分析及預防措施)
- 2023年上海市閔行區數學五年級第二學期期末教學質量檢測模擬試題含解析
- 2.PaleoScan詳細操作流程
- 【一例擴張型心肌病合并心力衰竭患者的個案護理】5400字【論文】
- 大客戶銷售:謀攻之道(全新版)
評論
0/150
提交評論