Java2教程ppt第七章.ppt_第1頁
Java2教程ppt第七章.ppt_第2頁
Java2教程ppt第七章.ppt_第3頁
Java2教程ppt第七章.ppt_第4頁
Java2教程ppt第七章.ppt_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、Java 2 實(shí)用教程,Java 2: A Beginners Guide,甘朝華,第七章 繼承, 理解繼承的基礎(chǔ)知識(shí) 調(diào)用超類構(gòu)造函數(shù) 使用super訪問超類成員 創(chuàng)建多級(jí)類層次結(jié)構(gòu) 了解何時(shí)調(diào)用構(gòu)造函數(shù) 理解子類對(duì)象的超類引用 重寫方法 使用重寫方法實(shí)現(xiàn)動(dòng)態(tài)方法分配 使用抽象類 使用final 了解Object類,繼承是面向?qū)ο蟪绦蛟O(shè)計(jì)的三個(gè)基本原則之一,它允許創(chuàng)建類層次結(jié)構(gòu)。 Java語言中,被繼承的類稱為超類,繼承類稱為子類。,7.1 繼承的基礎(chǔ)知識(shí),Java通過允許在一個(gè)類的聲明中加入另一個(gè)類來實(shí)現(xiàn)繼承,這需要使用關(guān)鍵字extends。,class TwoDShape double

2、width; double height; void showDim() / ,7.1 繼承的基礎(chǔ)知識(shí),class Triangle extends TwoDShape String style; double area( ) return width * height / 2; void showStyle() / ,7.1 繼承的基礎(chǔ)知識(shí),成員訪問與繼承: private聲明的成員:繼承不會(huì)超越private的訪問限制。 protected聲明,7.2 構(gòu)造函數(shù)和繼承,在層次結(jié)構(gòu)中,超類和子類都可以有自己的構(gòu)造函數(shù)。 超類構(gòu)造函數(shù) - 子類構(gòu)造函數(shù) 使用super調(diào)用超類構(gòu)造函數(shù): sup

3、er( parameter-list ); /必須是在子類中第一個(gè)執(zhí)行語句。 ?執(zhí)行的是超類的哪一個(gè)構(gòu)造函數(shù)?,7.3 使用super訪問超類成員,super的第二種形式的工作方式與this相似,只不過它飲用的是子類的超類。 super.member member是方法或?qū)嵗兞?,?dāng)子類的成員名隱藏了超類的成員名時(shí)使用。 練習(xí)7-1 擴(kuò)展Vehicle類,7.4 創(chuàng)建多級(jí)層次結(jié)構(gòu),可以創(chuàng)建任意多層繼承組成的層次結(jié)構(gòu)。,TwoDShape,Triangle,ColorTriangle,7.5 何時(shí)調(diào)用構(gòu)造函數(shù),按照繼承的順序:超類子類,7.6 超類引用和子類對(duì)象,Java是一種類型嚴(yán)格的語言。除

4、了標(biāo)準(zhǔn)轉(zhuǎn)換和應(yīng)用于簡單類型的自動(dòng)轉(zhuǎn)換外,類型兼容是被嚴(yán)格執(zhí)行的。 class X / class Y / X x = new X(); Y y = new Y(); X x2 = x;/合法 x2 = y;/非法,7.6 超類引用和子類對(duì)象,class X / class Y extends X / X x = new X(); Y y = new Y(); X x2 = x;/合法 x2 = y;/合法,7.6 超類引用和子類對(duì)象,超類指針的訪問權(quán)限: 它能訪問子類的成員嗎?,7.7 方法重寫,在類層次結(jié)構(gòu)中,當(dāng)子類中的方法與其超類中的方法同名且類型一致(函數(shù)簽名相同)時(shí),那么就稱子類中的方

5、法重寫(override)了超類中的方法。 在一個(gè)子類中調(diào)用被重寫方法時(shí),它總是引用子類中定義的方法,而超類中定義的方法將被隱藏。,7.8 重寫的方法支持多態(tài)性,方法重寫構(gòu)成了Java最強(qiáng)大的概念之一:動(dòng)態(tài)方法分配(dynamic method dispatch)。 動(dòng)態(tài)方法分配是一種機(jī)制,通過該機(jī)制對(duì)一個(gè)被重寫方法的調(diào)用會(huì)在運(yùn)行期解決,而不是在編譯期解決。 演示 多態(tài)運(yùn)行期調(diào)用,7.8 重寫的方法支持多態(tài)性,1、為何使用重寫的方法 使得Java支持運(yùn)行時(shí)多態(tài)性。 是面向?qū)ο蟪绦蛟O(shè)計(jì)的特性之一。 2、在TwoDShape中應(yīng)用方法重寫 講解 例題,7.9 使用抽象類,抽象類只定義為所有子類共享

6、的一般形式,至于細(xì)節(jié)則交給每一個(gè)子類去填充實(shí)現(xiàn)。 接口(Interface) 抽象方法(abstract method) 通過abstract類型修飾符來創(chuàng)建 abstract type name( parameter-list ); abstract不能用于static方法或構(gòu)造函數(shù)。 包含一個(gè)或多個(gè)抽象方法的類必須通過在其class聲明前添加abstract修飾符將其聲明為抽象類。,7.10 使用final,用于阻止方法重寫和繼承。,7.10 使用final,1、使用final防止重寫 class A final void meth( ) / class B extends A void meth( ) /Error / ,7.10 使用final,2、使用final防止繼承 final class A / class B extends A /Error / ,7.10 使用final,3、數(shù)據(jù)成員使用final 值在程序的生命期中不能改變。 class ErrorMsg final int OUTERR = 0; final int INERR = 1; final int DISKERR = 2; fina

溫馨提示

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

評(píng)論

0/150

提交評(píng)論