《TP02-繼承-ACCP-6.0-S2-3-使用Java實現(xiàn)面向?qū)ο缶幊?課件》由會員分享,可在線閱讀,更多相關(guān)《TP02-繼承-ACCP-6.0-S2-3-使用Java實現(xiàn)面向?qū)ο缶幊?課件(34頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、單擊此處編輯母版文本樣式,第二級,第三級,第四級,單擊此處編輯母版標題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,單擊此處編輯母版標題樣式,繼承,第二章,回顧及作業(yè)點評,如何從現(xiàn)實世界抽象出類?,構(gòu)造方法的語法要求是什么?,static,和,final,的含義是什么?,請一位同學(xué)到白板上畫出,Dog,類的類圖。,預(yù)習(xí)檢查,如何繼承一個類?,使用繼承有什么好處?,抽象類和抽象方法的特點是什么?,本章任務(wù),優(yōu)化電子寵物系統(tǒng),實現(xiàn)汽車租賃系統(tǒng)計價功能,為什么使用繼承,2-1,這兩個類圖有什么問題?,-name:String,-health:int,-love:int,-strain:St
2、ring,Dog,+print():void,+getName():String,+getHealth,():int,+getLove():int,+getStrain:String,+Dog(),-name:String,-health:int,-love:int,-sex:String,Penguin,+print():void,+getName():String,+getHealth,():int,+getLove():int,+getSex():String,+Penguin(),使用繼承優(yōu)化設(shè)計,將重復(fù)代碼抽取到父類中,為什么使用繼承,2-2,使用繼承優(yōu)化后:,子類與父類是,is-a
3、,關(guān)系,減少代碼量,方便修改代碼,如何使用繼承,使用繼承,編寫父類,編寫子類,繼承父類,class Pet,/,公共的屬性和方法,class Dog,extends,Pet,/,子類特有的屬性和方法,class Penguin,extends,Pet,只能繼承一個父類,繼承關(guān)鍵字,對比,C#,用“,:”,理解繼承,4-2,有些父類成員不能繼承,private,成員,子類與父類不在同包,使用默認訪問權(quán)限的成員,構(gòu)造方法,演示示例:不能繼承的情況,理解繼承,4-3,訪問修飾符,protected,可以修飾屬性和方法,本類、同包、子類可以訪問,訪問修飾符總結(jié),訪問修飾符,本類,同包,子類,其他,pr
4、ivate,默認,(friendly),protected,public,在何處使用繼承,何時使用繼承?,繼承與真實世界類似,只要說,“,貓是哺乳動物,”,,貓的很多屬性、行為,就不言自明了,藏獒是一種狗,繼承是代碼重用的一種方式,將子類都有的屬性和行為放到父類中,符合,is-a,關(guān)系的設(shè)計使用繼承,小結(jié),2-2,閱讀代碼,說出運行結(jié)果,class Car,private int site=4;/,座位數(shù),Car(),System.out.println(,載客量是,+site+,人,);,public void setSite(int site),this.site=site;,void p
5、rint(),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,人,方法重寫,子類中有和父類相同簽名的方法,會如何?,演示示例:斷點調(diào)試,print(),方法,子類,重寫,父類方法,指導(dǎo),優(yōu)化電子寵物系統(tǒng),2-1,訓(xùn)練要點:,繼承,子類重寫父類方法,理解繼承中的初始化過程,需求說明:,優(yōu)化電子寵物系統(tǒng)
6、,使用繼承實現(xiàn),Dog,類和,Penguin,類,打印寵物信息,講解需求說明,指導(dǎo),優(yōu)化電子寵物系統(tǒng),2-2,實現(xiàn)思路:,完成時間:,20,分鐘,繼承,抽象類,以下代碼有什么問題?,Java,中也使用抽象類,限制實例化,Pet pet=new Pet(,貝貝,20,40);,pet.print();,實例化,Pet,沒有意義,public,abstract,class Pet,在,C#,中通過抽象類實現(xiàn),抽象方法,以下代碼有什么問題?,abstract,也可用于方法,抽象方法,抽象方法沒有方法體,抽象方法必須在抽象類里,抽象方法必須在子類中被實現(xiàn),除非子類是抽象類,public,abstrac
7、t,void print();,沒有方法體,public abstract class Pet,public void print(),/,每個子類的實現(xiàn)不同,指導(dǎo),抽象,Pet,類,2-1,訓(xùn)練要點:,抽象類的定義和繼承,抽象方法定義和重寫,需求說明:,修改,Pet,類為抽象類,修改,Pet,類的,print(),方法為抽象方法,輸出,Dog,信息,講解需求說明,final,用法,Penguin,類不希望再被其他類繼承?,使用,final,類,方法不希望被重寫?,使用,final,方法,屬性值不希望被修改?,使用,final,方法,public,final,class Penguin ext
8、ends Pet,/,最終版的類,public,final,void print(),/,最終版的方法,public class Penguin,final,String home=,南極,;/,居住地,public void setHome(String name),this.home=home;/,錯誤,,home,不可以再次賦值,最終版的屬性值,共性問題集中講解,常見調(diào)試問題及解決辦法,代碼規(guī)范問題,共性問題集中講解,常見錯誤,請指出下面代碼的錯誤,class Dog,String name;,public Dog(String name),this.name=name;,class T
9、est,public static void main(String args),final Dog dog=new Dog(,歐歐,);,dog.name=,美美,;,dog=new Dog(,亞亞,);,使用,final,修飾引用型變量,變量不可以再指向另外的對象,使用,final,修飾引用型變量,變量的值是固定不變的,而變量所指向的對象的屬性值是可變的,綜合案例分析,2-1,發(fā)現(xiàn)類,發(fā)現(xiàn)類的屬性,綜合案例分析,2-2,發(fā)現(xiàn)類的方法,優(yōu)化設(shè)計,編寫程序入口,練習(xí),編寫測試代碼運行,需求說明:,編寫測試代碼運行,完成時間:,5,分鐘,總結(jié),如何繼承一個類?,繼承有什么好處?,抽象類和抽象方法的特點是什么?,面向?qū)ο笤O(shè)計的步驟是什么?,作業(yè),課后作業(yè),必做,教員備課時在此添加內(nèi)容,選做,教員備課時在此添加內(nèi)容,提交時間:,xxx,提交形式:,xxx,預(yù)習(xí)作業(yè),背誦英文單詞,教員備課時在此添加內(nèi)容,