下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
面向?qū)ο蟾呒壧匦砸?/p>
回顧包的概念訪問控制數(shù)組的相關(guān)概念一維數(shù)組的聲明和初始化二維數(shù)組的聲明和使用
內(nèi)容簡介封裝和繼承方法重寫及變量隱藏this關(guān)鍵字super關(guān)鍵字final關(guān)鍵字
什么是封裝將數(shù)據(jù)連同函數(shù)捆綁在一起,形成新的類型,這被稱為封裝。java語言中,對象就是對一組變量和相關(guān)方法的封裝,其中變量表明了對象的狀態(tài),方法表明了對象具有的行為。通過對象的封裝,實現(xiàn)了模塊化和信息隱藏。通過對類的成員施以一定的訪問權(quán)限,實現(xiàn)了類中成員的信息隱藏。封裝對象同時具有屬性和方法兩項特性對象的屬性和方法通常被封裝在一起,共同體現(xiàn)事物的特性,二者相輔相承,不能分割誰看見過只有“完好的零件和顏色”而不能開動的汽車?封裝的示例接口
采購經(jīng)理羅杰斯先生法拉力公司.迪斯尼汽車公司.市場經(jīng)理雪莉女士
要求
封裝的示例有選擇地提供數(shù)據(jù)法拉力公司迪斯尼汽車公司公共電話號碼電子郵箱產(chǎn)品種類私有備件的制造方法備件庫存?zhèn)浼闹圃斐杀竟搽娫捥柎a電子郵箱汽車種類私有汽車的組裝方法汽車庫存汽車的組裝成本封裝的示例實體法拉力公司實體迪斯尼汽車公司
AutiLtd.ButoLtd.屬性電話號碼電子郵箱產(chǎn)品種類現(xiàn)有存貨數(shù)量雇員詳情所需物料詳情屬性電話號碼電子郵箱汽車種類汽車規(guī)格雇員詳情庫存詳情經(jīng)銷商詳情方法接收訂單備件的制造方法計算備件的制造成本計算利潤率方法發(fā)出訂單汽車的組裝方法計算汽車的組裝成本計算工資發(fā)出訂單編制必要報告
什么是繼承繼承性是面向?qū)ο蟪绦蛟O(shè)計語言的另一基本特征,通過繼承可以實現(xiàn)代碼的復(fù)用。繼承而得到的類為子類,被繼承的類為父類(超類),父類包括所有直接或間接被繼承的類。子類可繼承父類中的變量及方法,也可定義其自身特有的變量及方法。
Java中不支持多重繼承。10生活中的繼承2-1生活中,繼承的例子隨處可見動物食草動物食肉動物誰是父類?誰是子類?能說出繼承的特點嗎?繼承需要符合的關(guān)系:is-a,父類更通用、子類更具體11生活中的繼承2-2子類具有父類的一般特性(包括屬性和行為),以及自身特殊的特性巴士是汽車嗎?卡車是汽車嗎?出租車是汽車嗎?最大載客數(shù)量報站引擎數(shù)量外觀顏色剎車加速汽車最大載重量卸貨所屬公司最大載客數(shù)量打發(fā)票屬性行為請問:出租車包含哪些屬性和行為呢?12為什么需要繼承4-1開發(fā)程序教員類,其中教員分為Java教員以及.NET教員,各自的要求如下:Java教員屬性:姓名、所屬中心方法:授課(步驟:打開Eclipse、實施理論課授課)、自我介紹.NET教員屬性:姓名、所屬中心方法:授課(步驟:打開Visualstudio2005、實施理論課授課)、自我介紹13請問:以下這個解決方案中存在著什么問題?為什么需要繼承4-2publicclassAccpDotNetTeacher{privateStringname;//教員姓名privateStringschool;//所在中心publicAccpDotNetTeacher(StringmyName,StringmySchool){name=myName;school=mySchool;}publicvoidgiveLession(){System.out.println("啟動
VisualStudio2005");System.out.println("知識點講解");System.out.println("總結(jié)提問");}publicvoidintroduction(){ System.out.println("大家好!我是" +school+"的"+name+".");}}publicclassAccpJavaTeacher{privateStringname;//教員姓名privateStringschool;//所在中心publicAccpJavaTeacher(StringmyName,StringmySchool){name=myName;school=mySchool;}publicvoidgiveLession(){System.out.println("啟動
Eclipse");System.out.println("知識點講解");System.out.println("總結(jié)提問");}publicvoidintroduction(){ System.out.println("大家好!我是" +school+"的"+name+".");}}代碼存在重復(fù),違背了“writeonce,onlyonce”的原則14為什么需要繼承4-3如何改進(jìn)?有沒有可能建立繼承關(guān)系,讓子類自動繼承父類的屬性和方法?Java教員是教員嗎?.NET教員是教員嗎?publicclassAccpTeacher{privateStringname;//教員姓名privateStringschool;//所在中心publicAccpTeacher(StringmyName,StringmySchool){name=myName;school=mySchool;}publicvoidgiveLesson(){System.out.println("知識點講解");System.out.println("總結(jié)提問");}publicvoidintroduction(){ System.out.println("大家好!我是“
+school+"的"+name+"。");}}現(xiàn)在,所有子類中相同的代碼都抽取到父類中了屬
性行
為姓名所在中心授課自我介紹教員Java教員.NET教員15為什么需要繼承4-4publicclassAccpJavaTeacher2extendsAccpTeacher{publicAccpJavaTeacher2(StringmyName,StringmySchool){super(myName,mySchool);}publicvoidgiveLesson(){System.out.println("啟動Eclipse");super.giveLesson();}}publicclassAccpDotNetTeacher2extendsAccpTeacher{publicAccpDotNetTeacher2(StringmyName,StringmySchool){super(myName,mySchool);}publicvoidgiveLesson(){System.out.println("啟動VisualStudio.NET");super.giveLesson();}}使用繼承,可以有效實現(xiàn)代碼復(fù)用子類自動繼承父類的屬性和方法,子類中不再存在重復(fù)代碼16如何實現(xiàn)繼承3-1在Java語言中,用extends關(guān)鍵字來表示一個類繼承了另一個類,例如:publicclassAccpJavaTeacher2
extends
AccpTeacher{//其余代碼省略}在父類中只定義一些通用的屬性與方法,例如:publicclassAccpTeacher{privateStringname;//教員姓名privateStringschool;//所在中心publicAccpTeacher(StringmyName,StringmySchool){//初始化屬性值}publicvoidgiveLesson(){//授課方法的具體實現(xiàn)}publicvoidintroduction(){//自我介紹方法的具體實現(xiàn)
}}17如何實現(xiàn)繼承3-2子類自動繼承父類的屬性和方法,子類中可以定義特定的屬性和方法publicclassAccpTeacher{privateStringname;//教員姓名privateStringschool;//所在中心publicAccpTeacher(StringmyName,StringmySchool){//初始化屬性值}publicvoidgiveLesson(){ //授課方法的具體實現(xiàn)}publicvoidintroduction(){ //自我介紹方法的具體實現(xiàn)
}}publicclassAccpJavaTeacher2extendsAccpTeacher{publicAccpJavaTeacher2(StringmyName,StringmySchool){super(myName,mySchool);}publicvoidgiveLesson(){System.out.println("啟動Eclipse");super.giveLesson();}}由于giveLesson()方法與父類的實現(xiàn)有所不同,因此重寫了該方法方法重寫:子類和父類的方法具有相同的名稱、參數(shù)列表、返回類型父類中的屬性和方法可以被子類繼承18publicclassAccpJavaTeacher2extendsAccpTeacher{publicAccpJavaTeacher2(StringmyName,StringmySchool){super(myName,mySchool);}}如何實現(xiàn)繼承3-3子類的構(gòu)造方法中,通過super關(guān)鍵字調(diào)用父類的構(gòu)造方法方法重寫后,通過super關(guān)鍵字調(diào)用父類的方法publicclassAccpJavaTeacher2extendsAccpTeacher{publicvoidgiveLesson(){System.out.println("啟動Eclipse");super.giveLesson();}}通過調(diào)用父類的構(gòu)造方法,完成對屬性值的初始化19一切類的“祖先”——Object在Java中,所有的Java類都直接或間接地繼承了java.lang.Object類publicclassMyObject{//…}publicclassMyObectextends
Object{
//…}在Eclipse中調(diào)用MyObject對象的成員,會自動彈出繼承自O(shè)bject的所有方法
繼承性子類可繼承父類方法和變量.
同一個包中 不同包中的子類privatedefault★protected★ ★public★ ★
變量隱藏及方法重寫原則變量隱藏原則:
子類中變量名與繼承自父類的變量名相同時,則繼承自父類的變量將被隱藏。方法重寫原則://重載子類有個方法與父類的方法完全一致叫做重寫重寫后的方法不能比被重寫的方法有更嚴(yán)格的訪問權(quán)限(可以相同)。改寫后的方法不能比重寫的方法產(chǎn)生更多的例外。
變量隱藏示例變量隱藏即指在子類中重新定義父類中 已有的變量;例:classCar{intcolor_number;intdoor_number=2;intspeed=100;publicvoidpush_break(){speed=0;}}
classTrash_CarextendsCar{doubleamount;
Stringcolor_number=“四個”;intspeed=300;publicvoidfill_trash(){…}}
方法重寫(覆蓋)示例方法重寫即指在子類中重新定義父類中 已有的方法;例:classCar{intcolor_number;intdoor_number;intspeed;publicvoidpush_break(){speed=0;}}
classTrash_CarextendsCar{doubleamount;publicvoidfill_trash(){…}
publicvoidpush_break(){speed=speed–10;}}
super關(guān)建字作用調(diào)用構(gòu)造方法:super()必須是子類構(gòu)造函數(shù)第一個執(zhí)行的語句,如果super()沒有被用到,每個超類的默認(rèn)的或無參數(shù)的構(gòu)造函數(shù)將被執(zhí)行。調(diào)用被隱藏變量及方法:
可通過super關(guān)鍵字調(diào)用被隱藏的父類中的變量及方法。
super關(guān)建字使用格式訪問父類被隱藏的成員變量, 如:
super.variable;調(diào)用父類中被重寫的方法,如:
super.Method([paramlist]);調(diào)用父類的構(gòu)造函數(shù),如: super([paramlist]);
多層次繼承Java不支持多繼承,可多層次繼承。
構(gòu)造方法調(diào)用在類層次結(jié)構(gòu)中,構(gòu)造方法以派生的順序調(diào)用,從超類(父類)到子類如右圖類的層次結(jié)構(gòu); 創(chuàng)建對象:newSonClass3();
則構(gòu)造方法調(diào)用順序為: Object→SonClass1→ SonClass2→SonClass328this關(guān)鍵字this是Java的一個關(guān)鍵字,表示某個對象。this可以出現(xiàn)在實例方法和構(gòu)造方法中,但不可以出現(xiàn)在類方法中。this關(guān)鍵字出現(xiàn)在類的構(gòu)造方法中時,代表使用該構(gòu)造方法所創(chuàng)建的對象。實例方法必須通過對象來調(diào)用,當(dāng)this關(guān)鍵字出現(xiàn)在類的實例方法中時,代表正在調(diào)用該方法的當(dāng)前對象。成員函數(shù)中定義了和成員變量中相同的變量時,引用成員變量要用this.構(gòu)造函數(shù)中調(diào)用同一個類的其他構(gòu)造函數(shù)時用this。29【例】編寫兩個重載構(gòu)造函數(shù)的類,在第二個構(gòu)造函數(shù)中使用this調(diào)用第一個構(gòu)造函數(shù)。publicclassThisConstructorCall{ publicThisConstructorCall(Strings){ System.out.println("s="+s); } publicThisConstructorCall(inti){ this("i="+i); } publicstaticvoidmain(Stringargs[]){ThisConstructorCallt=newThisConstructorCall("Stringcall");ThisConstructorCallct=newThisConstructorCall(47); }}s=Stringcalls=i=4730this關(guān)鍵字的示例classPixel{ intx;
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)短信應(yīng)用服務(wù)協(xié)議書模板
- 公寓開發(fā)商租賃合同
- 店面租賃合同協(xié)議書范例
- 醫(yī)療技術(shù)合作合同范例
- 勞動續(xù)簽合同的注意事項
- 域名及主機(jī)協(xié)議書范本
- 房屋買賣委托代理合同
- 企業(yè)間還款協(xié)議書樣本
- 協(xié)議供貨招標(biāo)文件2024年
- 用人單位設(shè)置霸王條款的法律風(fēng)險
- 消防設(shè)施設(shè)備及器材
- 二年級上冊數(shù)學(xué)試題判斷題專項訓(xùn)練蘇教版
- 《月歷中的數(shù)學(xué)問題》教學(xué)設(shè)計
- 小學(xué)語文語段修改專項訓(xùn)練(含答案)
- 滬教版七年級上英語練習(xí)題
- 騰訊公司績效管理制度-騰訊公司績效管理制度
- 課堂紀(jì)律不好的原因
- 課題初中數(shù)學(xué)作業(yè)優(yōu)化設(shè)計的研究研究報告
- 5s推進(jìn)計劃(絕對經(jīng)典)
- 小學(xué)數(shù)學(xué)答題卡模板(共3頁)
- 簡易呼吸氣囊操作評分標(biāo)準(zhǔn)
評論
0/150
提交評論