




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
面向?qū)ο蟾呒?jí)特性(一)內(nèi)容簡介封裝繼承多態(tài)什么是封裝
java語言中,對(duì)象就是對(duì)一組變量和相關(guān)方法的封裝,其中變量表明了對(duì)象的狀態(tài),方法表明了對(duì)象具有的行為。通過對(duì)象的封裝,實(shí)現(xiàn)了模塊化和信息隱藏。通過對(duì)類的成員施以一定的訪問權(quán)限,實(shí)現(xiàn)了類中成員的信息隱藏。
繼承性是面向?qū)ο蟪绦蛟O(shè)計(jì)語言的另一基本特征,通過繼承可以實(shí)現(xiàn)代碼的復(fù)用。繼承而得到的類為子類,被繼承的類為父類(超類),父類包括所有直接或間接被繼承的類。子類可繼承父類中的變量及方法,也可定義其自身特有的變量及方法。
Java中不支持多重繼承。什么是繼承如何實(shí)現(xiàn)繼承
1)通過在類的聲明中加入extends子句來創(chuàng)建一個(gè)類的子類:
classSubClassextendsSuperClass{……}2)如果缺省extends子句,則該類為java.lang.Object的子類,Object類是所有類的父類.3)
Java是單繼承:(下面錯(cuò)誤繼承)
…extendsSuperClassA,SuperClassB一個(gè)很好的經(jīng)驗(yàn):“B是一個(gè)A嗎?”如果是則讓B做A的子類.常犯的錯(cuò)誤A有一個(gè)B嗎?例如讓汽車輪子成為汽車的子類是錯(cuò)誤的何時(shí)選擇繼承繼承性子類可繼承父類方法和變量.
同一個(gè)包中不同包中的子類privatedefault★protected★ ★public★ ★變量隱藏及方法重寫原則變量隱藏原則:
子類中變量名與繼承自父類的變量名相同時(shí),則繼承自父類的變量將被隱藏。2)方法重寫原則:a)重寫后的方法不能比被重寫的方法有更嚴(yán)格的訪問權(quán)限(可以相同)。
b)改寫后的方法不能比重寫的方法產(chǎn)生更多的例外。
變量隱藏示例classCar{
intcolor_number;intdoor_number=2;intspeed=100;publicvoidpush_break(){speed=0;}}
classTrash_CarextendsCar{doubleamount;
Stringcolor_number=“四個(gè)”;
intspeed=300;publicvoidfill_trash(){…}}變量隱藏即指在子類中重新定義父類中已有的變量;例:方法重寫示例classCar{
intcolor_number;intdoor_number;intspeed;publicvoidpush_break(){speed=0;}}
classTrash_CarextendsCar{doubleamount;publicvoidfill_trash(){…}
publicvoidpush_break(){speed=speed–10;}}方法重寫即指在子類中重新定義父類中已有的方法;例:多層次繼承Java不支持多繼承,可多層次繼承。構(gòu)造方法調(diào)用在類層次結(jié)構(gòu)中,構(gòu)造方法以派生的順序調(diào)用,從超類(父類)到子類如右圖類的層次結(jié)構(gòu);創(chuàng)建對(duì)象:newSonClass3();則構(gòu)造方法調(diào)用順序?yàn)?Object→SonClass1→SonClass2→SonClass3super關(guān)建字作用調(diào)用構(gòu)造方法:super()必須是子類構(gòu)造函數(shù)第一個(gè)執(zhí)行的語句,如果super()沒有被用到,每個(gè)超類的默認(rèn)的或無參數(shù)的構(gòu)造函數(shù)將被執(zhí)行。2)調(diào)用被隱藏變量及方法:
可通過super關(guān)鍵字調(diào)用被隱藏的父類中的變量及方法。super關(guān)建字使用格式1)訪問父類被隱藏的成員變量,如:
super.variable;
2)調(diào)用父類中被重寫的方法,如:
super.Method([paramlist]);
3)調(diào)用父類的構(gòu)造函數(shù),如:
super([paramlist]);
1)final在類之前表示該類是最終類,不能再被繼承。2)final在方法之前表示該方法是最終方法,該方法不能被任何派生的子類覆蓋。3)final在變量之前表示變量的值在初始化之后就不能再改變;相當(dāng)于定義了一個(gè)常量。final關(guān)鍵字上轉(zhuǎn)型對(duì)象(上溯)在現(xiàn)實(shí)世界中我們說”老虎是哺乳動(dòng)物”,若哺乳類是老虎類的父類,這樣說當(dāng)然正確,但當(dāng)你說老虎哺乳動(dòng)物時(shí),老虎將失掉老虎獨(dú)有的屬性和功能。
如果A類是B類的父類,當(dāng)我們用子類創(chuàng)建對(duì)象,并把這個(gè)對(duì)象的引用放到父類的對(duì)象中時(shí):Aa;Bb=newB();或Aa=newB();a=b;
稱父類對(duì)象a是子類對(duì)象b的上轉(zhuǎn)型對(duì)象。
(好比說:老虎是哺乳動(dòng)物)上轉(zhuǎn)型對(duì)象特點(diǎn)上轉(zhuǎn)型對(duì)象的實(shí)體是子類負(fù)責(zé)創(chuàng)建的,所以上轉(zhuǎn)型對(duì)象失去原對(duì)象一此屬性和功能。不能操作子類新培的成員變量和方法;可以操作子類繼承的變量,也可操作子類繼承或重寫的方法;3)如果子類重寫了父類的某個(gè)方法后,當(dāng)對(duì)象的上轉(zhuǎn)型對(duì)象調(diào)用這個(gè)方法時(shí)一定是調(diào)用了這個(gè)重寫的方法。注:1)不要將父類創(chuàng)建的對(duì)象和子類對(duì)象上轉(zhuǎn)型對(duì)象混淆;
2)可以將對(duì)象的上轉(zhuǎn)型對(duì)象再強(qiáng)制轉(zhuǎn)換到一個(gè)子類對(duì)象,這時(shí),該子類對(duì)象又具備了子類所有屬生和功能;(即下溯)3)不可以將父類創(chuàng)建的對(duì)象的引用賦值給子類聲明的對(duì)象(不能說”哺乳動(dòng)物是老虎”);類型提升及強(qiáng)制條件類型自動(dòng)提升和強(qiáng)制類型轉(zhuǎn)換的條件:創(chuàng)建對(duì)象的類之間存在繼承關(guān)系。什么是多態(tài)1我們經(jīng)常說”哺乳動(dòng)物有很多種叫聲”,如”汪汪”,”喵喵”,”吼”等,這就是叫聲的多態(tài)。
當(dāng)一個(gè)類有很多子類時(shí),并且這些子類都重寫了父類中的某個(gè)方法。那么當(dāng)我們把子類創(chuàng)建的對(duì)象的引用放到一個(gè)父類的對(duì)象中時(shí)(即上轉(zhuǎn)型對(duì)象),那么這個(gè)上轉(zhuǎn)型對(duì)象調(diào)用這個(gè)方法時(shí)就具有多種形態(tài),因?yàn)樽宇愒谥貙懜割惙椒〞r(shí)可能生產(chǎn)不同行為。多態(tài)就是指父類的某個(gè)方法被子類重寫時(shí),可以各自產(chǎn)生自己的功能行為。什么是多態(tài)(接上)1)多態(tài)性中父類一般抽象為一個(gè)接口,(有多個(gè)實(shí)現(xiàn)類實(shí)現(xiàn)接口中某個(gè)方法)2)java在運(yùn)行時(shí)動(dòng)態(tài)方法調(diào)用叫做后期綁定(latebinding)多態(tài)示例packagemany;/***動(dòng)物類,父類.*/publicclassAnimal{ /** *定義叫聲方法.被子類重寫的方法。 */ publicvoidshout(){
System.out.println("..."); }}多態(tài)示例(接上)packagemany;publicclassCatextendsAnimal{ publicvoidshout(){
System.out.println("喵喵..."); }}packagemany;publicclassDogextendsAnimal{ publicvoidshout(){
System.out.println("汪汪..."); }}多態(tài)示例(接上)packagemany;publicclassM
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單位綠化維護(hù)合同范本
- 南澳縣打井合同范本
- 廠家木地板采購合同范本
- 海東河道橋梁護(hù)欄施工方案
- 出租同城 廠房合同范本
- 2025年貴州省安全員知識(shí)題庫附答案
- 2025湖南省建筑安全員-B證(項(xiàng)目經(jīng)理)考試題庫
- 單位房屋承建合同范本
- 2025山西省安全員-A證考試題庫及答案
- 加固工程分包合同范例
- 劉半農(nóng)《教我如何不想她》課件
- 前行第07節(jié)課(僅供參考)課件
- 船舶涂裝課件
- 界面砂漿檢測報(bào)告
- 浙江鞋業(yè)出口貿(mào)易研究
- (完整版)環(huán)境科學(xué)與工程-專業(yè)英語詞匯
- 中考形容詞副詞專題復(fù)習(xí)市公開課一等獎(jiǎng)省名師優(yōu)質(zhì)課賽課一等獎(jiǎng)?wù)n件
- 甲醛優(yōu)質(zhì)課件
- 畢業(yè)設(shè)計(jì)工程造價(jià)預(yù)算書
- 軌道檢測列車介紹課件
- 英語七年級(jí)下冊(cè)u(píng)1-u8 2b翻譯
評(píng)論
0/150
提交評(píng)論