Java程序設(shè)計(jì)115_第1頁
Java程序設(shè)計(jì)115_第2頁
Java程序設(shè)計(jì)115_第3頁
Java程序設(shè)計(jì)115_第4頁
Java程序設(shè)計(jì)115_第5頁
已閱讀5頁,還剩26頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第四章(二)繼承回顧及作業(yè)點(diǎn)評如何從現(xiàn)實(shí)世界抽象出類?構(gòu)造方法的語法要求是什么?static和final的含義是什么?請一位同學(xué)到白板上畫出Dog類的類圖。預(yù)習(xí)檢查如何繼承一個(gè)類?使用繼承有什么好處?抽象類和抽象方法的特點(diǎn)是什么?本章任務(wù)優(yōu)化電子寵物系統(tǒng)實(shí)現(xiàn)汽車租賃系統(tǒng)計(jì)價(jià)功能掌握繼承的優(yōu)點(diǎn)和實(shí)現(xiàn)掌握子類重寫父類方法掌握繼承下構(gòu)造方法的執(zhí)行過程掌握抽象類和抽象方法的使用掌握final修飾屬性、方法和類本章目標(biāo)為什么使用繼承 2-1這兩個(gè)類圖有什么問題?- name:String- health:int- love:int- strain:StringDog+ print():void+ get

2、Name():String+ getHealth ():int+ getLove():int+ getStrain:String+ Dog()- name:String- health:int- love:int- sex:StringPenguin+ print():void+ getName():String+ getHealth ():int+ getLove():int+ getSex():String+ Penguin() 使用繼承優(yōu)化設(shè)計(jì)使用繼承優(yōu)化設(shè)計(jì) 將重復(fù)代碼將重復(fù)代碼抽取到父類抽取到父類中中為什么使用繼承 2-2使用繼承優(yōu)化后: 子類與父類是子類與父類是is-a關(guān)系關(guān)系 減

3、少代碼量減少代碼量 方便修改方便修改代碼代碼 如何使用繼承使用繼承l(wèi)編寫父類l編寫子類,繼承父類class Pet /公共的屬性和方法公共的屬性和方法class Dog extends Pet /子類特有的屬性和方法子類特有的屬性和方法class Penguin extends Pet 只能繼承一個(gè)父類只能繼承一個(gè)父類 繼承關(guān)鍵字繼承關(guān)鍵字 對比對比C#用用“ : ” 理解繼承4-1子類訪問父類成員l訪問父類屬性l訪問父類方法 使用使用super關(guān)鍵字關(guān)鍵字 ;super.print();演示示例:演示示例:super用法用法 super代表代表父類對象父類對象 理解繼承4

4、-2有些父類成員不能繼承l(wèi)private成員 l子類與父類不在同包,使用默認(rèn)訪問權(quán)限的成員l構(gòu)造方法演示示例:不能繼承的情況演示示例:不能繼承的情況 理解繼承4-3訪問修飾符protectedl可以修飾屬性和方法l本類、同包、子類可以訪問訪問修飾符總結(jié) 訪問修飾符本類同包子類子類 其他private默認(rèn)(friendly)protectedpublic理解繼承4-4繼承后的初始化順序演示示例:斷點(diǎn)追蹤初始化過程演示示例:斷點(diǎn)追蹤初始化過程 父類屬性父類屬性 子類屬性子類屬性 父類構(gòu)造方法父類構(gòu)造方法 子類構(gòu)造方法子類構(gòu)造方法 在何處使用繼承何時(shí)使用繼承?l繼承與真實(shí)世界類似只要說“貓是哺乳動(dòng)物

5、”,貓的很多屬性、行為 就不言自明了藏獒是一種狗l繼承是代碼重用的一種方式 將子類都有的屬性和行為放到父類中將子類都有的屬性和行為放到父類中 符合符合is-a關(guān)系的設(shè)計(jì)使用繼承關(guān)系的設(shè)計(jì)使用繼承 小結(jié)2-1繼承使用什么關(guān)鍵字?子類可以繼承父類的哪些成員?使用繼承有什么好處?小結(jié)2-2閱讀代碼,說出運(yùn)行結(jié)果class Car private int site = 4; /座位數(shù)座位數(shù) Car() System.out.println (載客量是載客量是+site+人人); public void setSite(int site) this.site = site; void print() S

6、ystem.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人人 方法重寫子類中有和父類相同簽名的方法,會(huì)如何?演示示例:斷點(diǎn)調(diào)試演示示例:斷點(diǎn)調(diào)試print()方法方法 子類子類重寫重寫父類方法父類方法 繼承中的構(gòu)造方法構(gòu)造方法也會(huì)被重寫嗎?如何在子類中調(diào)用父類的構(gòu)造方法?super();super

7、(參數(shù)表參數(shù)表);演示示例:斷點(diǎn)調(diào)試演示示例:斷點(diǎn)調(diào)試super用法用法 可以被默可以被默認(rèn)添加認(rèn)添加 只能是構(gòu)造方法只能是構(gòu)造方法的第一條語句的第一條語句 不能被繼承因此不能重寫不能被繼承因此不能重寫 指導(dǎo)優(yōu)化電子寵物系統(tǒng)2-1訓(xùn)練要點(diǎn):l繼承l(wèi)子類重寫父類方法l理解繼承中的初始化過程需求說明:l優(yōu)化電子寵物系統(tǒng)使用繼承實(shí)現(xiàn)Dog類和Penguin類打印寵物信息講解需求說明講解需求說明指導(dǎo)優(yōu)化電子寵物系統(tǒng)2-2實(shí)現(xiàn)思路:完成時(shí)間:完成時(shí)間:20分鐘分鐘繼承繼承 抽象類以下代碼有什么問題?Java中也使用抽象類,限制實(shí)例化Pet pet = new Pet (貝貝貝貝,20,40);pet.p

8、rint();實(shí)例化實(shí)例化Pet沒沒有意義有意義 public abstract class Pet 在在C#中通過抽象類實(shí)現(xiàn)中通過抽象類實(shí)現(xiàn) 抽象方法以下代碼有什么問題?abstract也可用于方法抽象方法l抽象方法沒有方法體l抽象方法必須在抽象類里l抽象方法必須在子類中被實(shí)現(xiàn),除非子類是抽象類public abstract void print();沒有方法體沒有方法體 public abstract class Pet public void print() / 每個(gè)子類的每個(gè)子類的實(shí)現(xiàn)不同實(shí)現(xiàn)不同指導(dǎo)抽象Pet類2-1訓(xùn)練要點(diǎn):l抽象類的定義和繼承l(wèi)抽象方法定義和重寫 需求說明:l修改

9、Pet類為抽象類l修改Pet類的print()方法為抽象方法l輸出Dog信息講解需求說明講解需求說明指導(dǎo)抽象Pet類2-2實(shí)現(xiàn)思路l修改Pet類為抽象類,修改print()為抽象方法lDog類繼承Pet類,實(shí)現(xiàn)print()方法l運(yùn)行測試l注釋掉Dog類中print()方法,運(yùn)行測試類查看錯(cuò)誤信息l編寫注釋完成時(shí)間:完成時(shí)間:15分鐘分鐘final用法Penguin類不希望再被其他類繼承?l使用final類方法不希望被重寫?l使用final方法屬性值不希望被修改?l使用final方法public final class Penguin extends Pet /最終版的類最終版的類 publi

10、c final void print () /最終版的方法最終版的方法public class Penguin final String home =南極南極;/ 居住地居住地 public void setHome(String name) this.home=home; /錯(cuò)誤,錯(cuò)誤,home不可以再次賦值不可以再次賦值 最終版的屬性值最終版的屬性值常見錯(cuò)誤請指出下面代碼的錯(cuò)誤class Dog String name; public Dog(String name) = name; class Test public static void main(String a

11、rgs) final Dog dog = new Dog(歐歐歐歐); = 美美美美; dog = new Dog(亞亞亞亞); 使用使用final修飾引用型修飾引用型變量,變量不可以再變量,變量不可以再指向另外的對象指向另外的對象使用使用final修飾引用型變量,變量的值是固定不修飾引用型變量,變量的值是固定不變的,而變量所指向的對象的屬性值是可變的變的,而變量所指向的對象的屬性值是可變的綜合案例某汽車租賃公司出租多種車輛,車型及租金情況如下:編寫程序?qū)崿F(xiàn)計(jì)算租賃價(jià)轎車客車(金杯、金龍)車型別克商務(wù)艙GL8寶馬550i別克林蔭大道16座日租費(fèi)(元/天)6005003008001500綜合案例分析2-1發(fā)現(xiàn)類發(fā)現(xiàn)類的屬性綜合案例分析2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論