繼承接口和內(nèi)部類.ppt

繼承接口和內(nèi)部類.ppt

ID:52517667

大?。?30.55 KB

頁數(shù):12頁

時(shí)間:2020-04-09

繼承接口和內(nèi)部類.ppt_第1頁
繼承接口和內(nèi)部類.ppt_第2頁
繼承接口和內(nèi)部類.ppt_第3頁
繼承接口和內(nèi)部類.ppt_第4頁
繼承接口和內(nèi)部類.ppt_第5頁
資源描述:

《繼承接口和內(nèi)部類.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、●繼承●多態(tài)●抽象類●接口●內(nèi)部類第四章繼承、接口和抽象類●繼承●繼承的特點(diǎn)●extends父類名;若無extends,則默認(rèn)父類Object●子類將繼承父類成員,但不能直接訪問父類private成員●單繼承,多層繼承●子類對(duì)父類可做擴(kuò)展和特殊化(1)創(chuàng)建新的成員:成員變量和方法(2)重新定義父類中已有的成員變量:隱藏(3)重新定義父類中已有的方法:覆蓋(override)子類中的方法應(yīng)與父類中的被覆蓋的方法有完全相同的:參數(shù)列表、返回值;而且訪問權(quán)限不能更嚴(yán)格●super():調(diào)用父類被覆蓋的方法;父類構(gòu)造方法例:Circle.java,Cylinder.java●繼承

2、●繼承的特點(diǎn)●子類的構(gòu)造方法(1)若子類的構(gòu)造方法中,沒有使用super調(diào)用父類的構(gòu)造方法和this調(diào)用重載的其他構(gòu)造方法,則在創(chuàng)建子類對(duì)象時(shí),系統(tǒng)默認(rèn)先調(diào)用父類的無參構(gòu)造方法,然后執(zhí)行子類的構(gòu)造方法;(2)在子類的構(gòu)造方法中使用super(參數(shù))調(diào)用父類的含參構(gòu)造方法,super必須是第一句(3)this()和super()不能同時(shí)出現(xiàn)例:Sandwich.java(構(gòu)造方法調(diào)用次序)●多態(tài)一個(gè)引用變量可以引用多種實(shí)際類型的現(xiàn)象稱為多態(tài),在運(yùn)行時(shí)能夠自動(dòng)選擇調(diào)用適當(dāng)?shù)姆椒ǚQ為動(dòng)態(tài)綁定●引用變量的類型轉(zhuǎn)換●子類引用變量轉(zhuǎn)換成父類引用變量(1)規(guī)則:沿著繼承層次,從下往上,

3、子類可以自動(dòng)轉(zhuǎn)換成父類(2)轉(zhuǎn)換時(shí)機(jī):賦值,方法調(diào)用(參數(shù)傳遞)EmployeeManagerSecretaryProgrammerManagerm=newManager(…);Employeee=m;//賦值時(shí)發(fā)生自動(dòng)轉(zhuǎn)換e.raiseSalary();//正確e.setBonus();//錯(cuò)誤raiseSalary()setBonus()●多態(tài)●引用變量的類型轉(zhuǎn)換●父類引用變量轉(zhuǎn)換成子類引用變量(強(qiáng)制轉(zhuǎn)換)子類引用變量=(子類)父類引用變量EmployeeManagerSecretaryProgrammerEmployeee=newEmployee(…);Manage

4、rm=e;//錯(cuò)誤Employeee=newEmployee(…);Managerm=Manger(e);//強(qiáng)制轉(zhuǎn)換●多態(tài)●引用變量的類型轉(zhuǎn)換●Object類,toString方法例:PolyTest.java多態(tài):為父類對(duì)象設(shè)計(jì)的任何代碼都可以應(yīng)用于子類●動(dòng)態(tài)綁定●對(duì)象方法的執(zhí)行過程●優(yōu)點(diǎn):無需對(duì)現(xiàn)存代碼進(jìn)行修改就可對(duì)程序進(jìn)行擴(kuò)展CnCn-1Cn-2C1C0……順序查找●instanceof對(duì)象引用instanceof類(或接口)例:Polymorphism.java●抽象類●抽象類●abstract●不包含方法定義的方法稱為抽象方法●任何包含抽象方法的類必須聲明為抽

5、象類●不能生成抽象類的對(duì)象●抽象類的子類必須覆蓋所有的抽象方法,才能生成對(duì)象,否則仍然是抽象類例:AbstractClassTest.javaarea()CircleSquareShapearea()area()area()Triangle●接口●接口●描述類具有什么功能,而不給出每個(gè)功能的具體實(shí)現(xiàn)●接口中的方法和成員變量●定義接口方法:隱含為publicabstract變量:隱含為publicstaticfinal[public]interface接口名[extends接口列表]{返回類型方法名();…常量類型常量名=...;…}●接口●接口●使用接口當(dāng)一個(gè)類聲明imp

6、lements某一interface時(shí),必須具體實(shí)現(xiàn)該interface中定義的抽象方法,并把此方法定義為public的(抽象類除外)●利用接口可實(shí)現(xiàn)多重繼承,一個(gè)類可以實(shí)現(xiàn)一個(gè)或多個(gè)接口例:InterfaceTest.java接口與抽象類的區(qū)別:●接口中,數(shù)據(jù)必須是常量,抽象類可以有非常量的數(shù)據(jù);●接口中,每個(gè)方法只有方法名定義,沒有實(shí)現(xiàn),抽象類可以有具體的實(shí)現(xiàn)方法;●Java對(duì)類的擴(kuò)展只允許單重繼承,對(duì)接口允許多重繼承;●強(qiáng)是關(guān)系:明顯地描述父子關(guān)系,用抽象類;弱是關(guān)系:對(duì)象擁有某種屬性,用接口;●內(nèi)部類在一個(gè)類的內(nèi)部嵌套定義的類●成員內(nèi)部類●可以訪問外部類的成員變量

7、和方法;反過來不行●可以聲明為private,protected,public或缺省●若為static,則不能訪問非static成員,很少使用●若局部變量,內(nèi)部類的成員變量和外部類的成員變量重名則分別用變量名;this.變量名:外部類名.this.變量名表示●引用:若為public,則外部類名.內(nèi)部類名Outero=newOuter();Outer.Inneri=o.newInner();或Outer.Inneri=newOuter.newInner();例:InnerClassTest.java●內(nèi)部類●方法中的內(nèi)部類●可以

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。