Java面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程課件:Java面向?qū)ο蟮奶卣鱛第1頁
Java面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程課件:Java面向?qū)ο蟮奶卣鱛第2頁
Java面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程課件:Java面向?qū)ο蟮奶卣鱛第3頁
Java面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程課件:Java面向?qū)ο蟮奶卣鱛第4頁
Java面向?qū)ο蟪绦蛟O(shè)計(jì)案例教程課件:Java面向?qū)ο蟮奶卣鱛第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

Java面向?qū)ο蟮奶卣骼斫夥庋b性;掌握繼承的實(shí)現(xiàn)方法以及類成員的訪問和繼承原則理解抽象類和最終類的特點(diǎn)及使用場合掌握多態(tài)技術(shù)的具體形式與應(yīng)用理解接口的含義與作用,會使用接口進(jìn)行簡單的程序設(shè)計(jì)了解Java的常用類庫包教學(xué)目標(biāo)28十月2024在面向?qū)ο蟪绦蛟O(shè)計(jì)方法中,封裝是指,一種將抽象性函式接口的實(shí)作細(xì)節(jié)部份包裝、隱藏起來的方法。封裝可以被認(rèn)為是一個(gè)保護(hù)屏障,防止該類的代碼和數(shù)據(jù)被外部類定義的代碼隨機(jī)訪問。要訪問該類的代碼和數(shù)據(jù),必須通過嚴(yán)格的接口控制。封裝是一種信息隱藏技術(shù),在java中通過關(guān)鍵字private實(shí)現(xiàn)封裝。詳見教材例題5-15.1封裝28十月2024繼承性反應(yīng)了類之間的一種關(guān)系。一個(gè)類可以繼承其他類的所有成員,包括成員變量和成員方法,該類還可以擁有自己的成員。被繼承的類稱之為父類,繼承后生成的新類稱之為子類。父類和子類之間是集成管理,又稱為派生關(guān)系。Java語言僅支持單繼承,即每個(gè)子類只允許一個(gè)父類,而不允許有多個(gè)父類。但是可以從一個(gè)父類中生成若干個(gè)子類。繼承不改變成員變量的訪問權(quán)限,父類中的公有成員、私有成員和保護(hù)成員,在子類中仍然是公有成員、私有成員和保護(hù)成員。5.2繼承28十月2024在講解繼承的基本概念之前,讀者可以先想一想這樣一個(gè)問題:現(xiàn)在假設(shè)有一個(gè)Person類,里面有name與age兩個(gè)屬性,而另外一個(gè)Student類,需要有name、age、school三個(gè)屬性,如圖5-1所示,從這里可以發(fā)現(xiàn)Person中已經(jīng)存在有name和age兩個(gè)屬性,所以不希望在Student類中再重新聲明這兩個(gè)屬性,這個(gè)時(shí)候就需要考慮是不是可以將Person類中的內(nèi)容繼續(xù)保留到Student類中,也就是引出了接下來所要介紹的類的繼承概念。5.2.1繼承的實(shí)現(xiàn)28十月202428十月2024圖5-1Student類與Person類在這里希望Student類能夠?qū)erson類的內(nèi)容繼承下來后繼續(xù)使用,可用圖5-2表示:圖5-2Student類與Person類繼承關(guān)系Java類的繼承格式如下:class子類名extends父類名{子類體}詳見教材例題5-228十月2024詳見教材例題5-3,5-4,5-55.2.2子類對象的實(shí)例化過程28十月2024從TestPersonStudentDemo1中讀者應(yīng)該可以發(fā)現(xiàn),super關(guān)鍵字出現(xiàn)在子類中,而且是去調(diào)用了父類中的構(gòu)造方法,所以可以得出結(jié)論:super主要的功能是完成子類調(diào)用父類中的內(nèi)容,也就是調(diào)用父類中的屬性或方法。詳見教材例題5-6super關(guān)鍵字不僅可以調(diào)用父類中的構(gòu)造方法,也可以調(diào)用父類中的屬性或方法,格式如下:super.父類中的屬性;super.父類中的方法();詳見教材例題5-7,5-8,5-95.2.3super關(guān)鍵字28十月20245.3.1抽象類與抽象方法類是對現(xiàn)實(shí)世界中實(shí)體的抽象,但我們不能以相同的方法為現(xiàn)實(shí)世界中所有的實(shí)體做模型,因?yàn)楝F(xiàn)實(shí)世界中大多數(shù)的類太抽象而不能獨(dú)立存在。例如:我們不能給出一個(gè)通用的計(jì)算二維圖形面積的方法。定義抽象類的一般格式如下:[訪問限定符]abstractclass類名{//屬性說明…//抽象方法聲明…//非抽象方法定義…}5.3抽象類和最終類28十月2024類中允許定義抽象方法。所謂抽象方法,是指在類中僅僅聲明了類的行為,并沒有真正實(shí)現(xiàn)行為的代碼,即只有方法頭、沒有方法體的方法。聲明抽象方法的一般格式如下:[訪問限定符]abstract數(shù)據(jù)類型方法名([參數(shù)列表]);例如:abstractvoiddraw();//聲明類中的draw()方法為抽象方發(fā)法

28十月2024有關(guān)抽象類和抽象方法的說明如下:抽象類只能被繼承而不能創(chuàng)建具體對象,即不能被實(shí)例化。2.抽象方法僅僅是為所有的派生子類定義一個(gè)統(tǒng)一的接口,方法具體實(shí)現(xiàn)的程序代碼由各個(gè)派生子類來完成,不同的子類可以根據(jù)自身的情況以不同的程序代碼實(shí)現(xiàn)。3.抽象方法只能存在于抽象類中,一個(gè)類中只要有一個(gè)方法是抽象的,則這個(gè)類就是抽象的。構(gòu)造方法、靜態(tài)(static)方法、最終(final)方法和私有(private)方法都不能被聲明為抽象方法。詳見教材例題5-1028十月20245.3.2最終類最終類是指不能被繼承的類。即最終類沒有子類。在Java語言中,如果不希望某個(gè)類被繼承,可以聲明這個(gè)類為最終類。最終類用關(guān)鍵字final來說明。例如:publicfinalclassC就定義類C為最終類。如果沒有必要?jiǎng)?chuàng)建最終類,而又想保護(hù)類中的一些方法不被覆蓋,可以用關(guān)鍵字final來指明那些不能被子類覆蓋的方法,這些方法稱為最終方法。例如:publicclassA{Publicfinalvoidf()}上例在類A中定義了一個(gè)最終方法f(),任何類A的子類都不能覆蓋方法f()。28十月2024多態(tài)是面向?qū)ο蟮闹匾匦?,簡單點(diǎn)說是“一個(gè)接口,多種實(shí)現(xiàn)”,就是指同一種事物表現(xiàn)出多種形態(tài)。編程其實(shí)就是一個(gè)將具體世界進(jìn)行抽象化的過程,多態(tài)就是抽象化的一種體現(xiàn),把一系列具體事物的共同點(diǎn)抽象出來,再通過這個(gè)抽象的事物,與不同的具體事物進(jìn)行對話。多態(tài)是指一個(gè)方法只能有一個(gè)名稱,但可以有許多形態(tài),也就是程序中可以定義多個(gè)同名的方法。多態(tài)提供了“接口與實(shí)現(xiàn)的分離”,將“是什么”與“怎么做”分離出來。多態(tài)主要分為方法的覆蓋和方法的重載。

5.4多態(tài)28十月20245.4.1方法的覆蓋覆蓋是發(fā)生在子類繼承父類過程中,對原有變量或方法進(jìn)行的覆蓋操作,是Java多態(tài)特性的一個(gè)重要體現(xiàn),表現(xiàn)在不用類之間子類對父類方法的覆蓋,改變父類方法原有的行為和意義。方法覆蓋:如果在子類中定義一個(gè)方法,其名稱、返回類型及參數(shù)簽名正好與父類中某個(gè)方法的名稱、返回類型及參數(shù)簽名相匹配,那么可以說,子類的方法覆蓋了父類的方法。詳見教材例題5-1128十月20245.4.2方法的重載在Java中,同一個(gè)類中的兩個(gè)或兩個(gè)以上的方法可以有同一個(gè)名字,只要它們的參數(shù)聲明不同即可。在這種情況下,該方法被稱為重載(Overloaded),這個(gè)過程被稱為方法重載(MethodOverloaded)。方法重載是Java實(shí)現(xiàn)多態(tài)的一種方式。當(dāng)一個(gè)重載方法被調(diào)用時(shí),Java用參數(shù)的類型和(或)數(shù)量來表名實(shí)際調(diào)用的重載方法的版本。因此,每個(gè)重載方法的參數(shù)的類型和(或)數(shù)量必須是不同的。雖然每個(gè)重載方法可以有不同的返回類型,但返回類型并不足以區(qū)分所使用的是哪個(gè)方法。當(dāng)Java調(diào)用一個(gè)重載方法時(shí),參數(shù)與調(diào)用參數(shù)匹配的方法被執(zhí)行。28十月2024項(xiàng)目方法重載方法覆蓋(重寫)類的層次針對同一個(gè)類中的同名方法針對父類與子類中的同名方法方法名稱各重載方法的名稱必須完全相同被繼承與繼承的方法名稱必須完全相同返回值類型各重載方法的返回值的類型必須完全相同被繼承與繼承的方法的返回值的類型必須完全相同參數(shù)類型各重載方法的參數(shù)類型可以不同被繼承與繼承方法的參數(shù)類型必須完全相同參數(shù)數(shù)目各重載方法的參數(shù)數(shù)目可以不同被繼承與繼承方法的參數(shù)數(shù)目必須完全相同表5-1成員方法的重載與覆蓋的區(qū)別詳見教材例題5-1228十月20245.5.1接口的概念在Java中接口是一個(gè)全部由抽象方法組成的集合,接口需要用interface定義,里面只能有抽象的方法和常量。接口體現(xiàn)的是事物擴(kuò)展的功能,在Java中,類定義了一個(gè)實(shí)體,包括實(shí)體的屬性,實(shí)體的行為。而接口定義了一個(gè)實(shí)體可能發(fā)生的動作,只有一個(gè)聲明,沒有具體的行為。當(dāng)一個(gè)方法在很多類中有不同的體現(xiàn)是時(shí)候這個(gè)時(shí)候就可以將這個(gè)方法抽象出來做成一個(gè)接口。接口里面只能有不可修改的全局常量,只能有抽象的方法,接口沒有構(gòu)造方法。5.5接口28十月20245.5.2接口的定義接口的定義格式如下:[public]interface接口名[extends父接口列表]//接口聲明{//接口體開始//常量數(shù)據(jù)成員的聲明及定義

數(shù)據(jù)類型

常量名=常數(shù)值;…//聲明抽象方法

返回值類型

方法名([參數(shù)列表])[throw異常列表];…}//接口體結(jié)束28十月2024說明如下:定義接口時(shí)使用interface定義,區(qū)別于抽象類,不需要加class。接口不能被實(shí)例化,不能直接創(chuàng)建對象,因?yàn)榻涌诶锩嬷挥谐橄蟮姆椒?,沒有具體的功能。接口可以繼承接口,接口要實(shí)現(xiàn)具體的功能必須有實(shí)現(xiàn)他的子類,實(shí)現(xiàn)接口的子類中必須重寫接口全部的抽象方法。接口和接口之間可以多繼承。接口的子類可以是抽象類,但是沒有實(shí)際的意義。一個(gè)子類可以實(shí)現(xiàn)多個(gè)接口,通過implements關(guān)鍵字去實(shí)現(xiàn)。接口需要通過多態(tài)才能創(chuàng)建對象。28十月20245.5.3接口的實(shí)現(xiàn)接口的實(shí)現(xiàn),即在實(shí)現(xiàn)接口的類中重寫接口中給出的所有方法,書寫方法體代碼,完成方法所規(guī)定的功能。實(shí)現(xiàn)接口類的一般格式如下:[訪問限定符][修飾符]class類名[extends父類名]implements接口名列表{//類體開始標(biāo)志[類的成員變量說明]//屬性說明[類的構(gòu)造方法定義][類的成員方法定義]/*重寫接口方法*/接口方法定義//實(shí)現(xiàn)接口方法}下面舉例說明接口的實(shí)現(xiàn)。教材例題5-1328十月20245.6.1包的概念Java中的包package,就是電腦中的文件夾。我們平時(shí)在工作中,文件太多時(shí),都會新建文件夾進(jìn)行分類管理,java中的包也是類似的道理,當(dāng)我們的類太多時(shí),也需要進(jìn)行分類管理,這時(shí)我們就會把類文件放到包中,就是把這個(gè).class文件放到了一個(gè)文件夾中,這樣也能有效地避免了命名沖突。5.6package關(guān)鍵字和包28十月20245.6.2包的創(chuàng)建通過關(guān)鍵字package來聲明包。格式如下:packagepackageName;其中,packageName是聲明的包名。Package語句作為Java源文件的第1條非空格、非注釋語句,指明該源文件定義的類所在的包。如果在源文件中省略了Package語句,則源文件中用戶定義命名的類被隱含地認(rèn)為是無名包的一部分,即源文件中用戶定義命名的類在同一個(gè)包中,但該包沒有名字。28十月20245.6.3包的引用創(chuàng)建一個(gè)包之后,就要對它進(jìn)行引用。一般來說,可以使用import

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(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

提交評論