資源描述:
《[理學]第5章 繼承、接口與泛型》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在教育資源-天天文庫。
1、第5章繼承、接口與泛型?本章導讀1.子類與父類2.子類的繼承性3.子類對象的構造過程4.成員變量隱藏和方法的重寫5.super關鍵字6.final類與final方法7.對象的上轉(zhuǎn)型對象8.繼承與多態(tài)9.使用abstract類10.接口11.接口回調(diào)12.內(nèi)部類13.匿名類14.異常類15.泛型類5.1子類與父類由繼承而得到的類稱為子類,被繼承的類稱為父類(超類、基類)。返回定義子類:class子類名extends父類名{……}父類子類1子類2......子類n動物類貓類狗類......羊類指明繼承關系例:5.2子類的繼承性類繼承就是子類繼承父類的成員變量和方
2、法作為自己的成員變量和方法,就好象它們是在子類中直接聲明一樣。父類可以是自己編寫的類也可以是Java類庫中的類。Java不支持多重繼承,即子類只能有一個父類。舉例:TestExtends.java(利用繼承有利于實現(xiàn)代碼的重復使用,子類只需要添加新的功能代碼即可。)子類自然地繼承了其父類中的所有成員作為自己的成員。繼承的成員變量以及方法的訪問權限保持不變。5.2子類的繼承性看例子5-1:Father類privateintmoneyDollarintmoneyHKintadd(intx,inty)Son類intmoneyRMBpublicvoidchangMo
3、neyRMB(intx)intsubs(intx,inty)privateintmoneyDollarintmoneyHKintadd(intx,inty)GrandSon類privateintmoneyDollarintmoneyHKintadd(intx,inty)intmoneyRMBpublicvoidchangMoneyRMB(intx)intsubs(intx,inty)intmulti(intx,inty)子類的構造方法總是先調(diào)用父類的某個構造方法。默認調(diào)用父類構造方法:super();舉例:C1.java思考:若子類構造方法既沒有顯式調(diào)用父類
4、構造方法,而父類中又沒有無參的構造方法,會怎樣?顯式調(diào)用父類的構造方法:super(參數(shù)列表);該語句必須為子類構造方法的第1條可執(zhí)行語句。舉例:C2.java會編譯出錯。5.3子類對象的構造過程classA{intax;publicA(intax){this.ax=ax;System.out.println("調(diào)用A類中有參數(shù)的構造方法,ax="+ax);}}classBextendsA{intby;publicB(intx,intby){super(x);this.by=by;}}classC2{publicstaticvoidmain(Stringar
5、gs[]){Bb=newB(66,88);System.out.println(b.ax+","+b.by);}}5.4成員變量的隱藏和方法的重寫1.成員變量的隱藏在子類中定義和父類中同名的成員變量。變量的類型可以不同。舉例:Example5_3.java?類B中都包含哪些成員變量、哪些方法?Java規(guī)定,當執(zhí)行從父類繼承的方法時,處理的是繼承自父類的變量;當子類執(zhí)行由自己定義的方法時,處理的是自己定義的成員變量,而將繼承自父類的名稱相同的成員變量隱藏起來。若想要訪問被隱藏的成員變量,必須在成員變量前面添加前綴,前綴用關鍵字super加圓點操作符。5.4成員
6、變量的隱藏和方法的重寫2.方法重寫(覆蓋)方法的重寫是在子類中定義和父類中方法名相同、參數(shù)表相同和返回值類型相同的方法,這時,子類中的方法將會覆蓋父類中的同名方法。舉例:Example5_4.java如果子類中想使用被隱藏的方法,必須使用關鍵字super。說明:(1)Java5.0版規(guī)定,若返回類型是類類型,則可以把返回類型改變?yōu)樵擃惖娜魏巫訉O類.(2)在子類中不能將它們的訪問權限改變?yōu)楦芟拗频脑L問權限.如:父類方法是public的,則子類重寫方法也必須是public的。5.4成員變量的隱藏和方法的重寫(3)注意區(qū)分重載和重寫.如果在子類中定義與父類同名的
7、方法,參數(shù)個數(shù)或參數(shù)類型與父類的方法不盡相同,那實際上也沒有重寫繼承的方法,這時子類就出現(xiàn)兩個方法具有相同的名字(方法的重載)。舉例:見Example5_5.java5.5super關鍵字1.使用super調(diào)用父類的構造方法子類不繼承父類的構造方法。格式:super(參數(shù)列表);舉例:Example5_6.java,TestStudent.java不能在構造方法中同時使用super()和this().返回2.使用super操作被隱藏的成員變量和方法格式:super.父類成員變量;super.父類成員方法(參數(shù)列表);注意:(1)只有在子類方法的定義中,可以使
8、用super。(在子類定義的外部,不能使用子類的對象