




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第二章Java面向?qū)ο缶幊?繼承)繼承從現(xiàn)有類派生出新類,稱為繼承。通過繼承,可以實(shí)現(xiàn)源代碼級(jí)的復(fù)用,提高程序的可維護(hù)性。其中被繼承的類稱為父類,派生得到的類稱為子類。執(zhí)行繼承時(shí),子類將獲得父類的屬性和行為,并具有自身特有的屬性和行為,java語(yǔ)言不支持多重繼承。
繼承是面向?qū)ο蟮淖钪匾奶厣?,它允許創(chuàng)建分等級(jí)層次的類。Emoloyee類:
姓名
性別年齡Worker類:
工種工齡服裝津貼Work()Officer類:級(jí)別職稱是否配備交通工具M(jìn)anage()職員類工人類,繼承了父類的姓名等屬性干部類,還包含級(jí)別等新的屬性和功能Animal類:-leg-kindAnimal()eat()move()getLegs()setLegs()Fish:Fish()Bird:Bird()Lion:Lion()Ostrich:Ostrich()hideHead()多層次類結(jié)構(gòu)繼承的實(shí)現(xiàn)繼承通過關(guān)鍵字extends聲明。聲明一個(gè)繼承父類的類的通常形式如下:classsubclass-nameextendssuperclass-name{//類體}
注意如省略extends,默認(rèn)父類為Object類只能有一個(gè)直接父類,即單繼承子類繼承父類的全部成員繼承示例classEmployee{
Stringname;//姓名
charsex;//性別
Employee(Stringn,chars){name=n;sex=s;}publicStringgetName(){returnname;}publicchargetSex(){returnsex;}}classOfficerextendsEmployee
{
chargrade;//級(jí)別
Stringprofession;//職稱
Officer(Stringn,chars,charg,Stringp){
name=n;sex=s;
grade=g;profession=p;}publicchargetGrade(){returngrade;}
publicbooleangetProfession(){returnprofession;}publicvoidmanage(){System.out.println(“管理工人。”);}}classInheDemo{publicstaticvoidmain(Stringargs[]){Officerw=newOfficer(“M.John”,‘M’,‘B’,“高級(jí)”);
System.out.println(“員工信息");
System.out.println("姓名
:"+w.getName());System.out.println("性別
:
"+w.getSex());
System.out.println(“級(jí)別
:"+w.getgrade());System.out.println(“職稱:"+w.getProfession());
w.manage();}}成員的訪問與繼承classA{inti,j;voidshowij(){System.out.println(”i=”+i+”,j=”+j);}}classBextendsA{intk;voidshowk(){System.out.println(”k=”+k);}voidsum(){System.out.println(”sum=”+i+j+k);}}classDemo{publicstaticvoidmain(Stringargs[]){Aobj1=newA();Bobj2=newB();obj1.i=1;obj1.j=2;obj1.showij();obj2.i=3;obj2.j=4;obj3.k=5;obj2.showij();obj2.showk();obj2.sum();}}改成私有privatesuper引用super有兩種使用形式:一是在子類的構(gòu)造方法中直接調(diào)用父類的構(gòu)造函數(shù),二是用來訪問被子類的成員隱藏或覆蓋的父類成員。
調(diào)用父類構(gòu)造函數(shù)形式:super(參數(shù));其中,方法名稱換成super,參數(shù)跟父類構(gòu)造函數(shù)參數(shù)一致,注意super必須是在子類構(gòu)造函數(shù)中的第一個(gè)執(zhí)行語(yǔ)句。而且,子類構(gòu)造函數(shù)中如果沒有super()語(yǔ)句,系統(tǒng)會(huì)自動(dòng)加上一條super()的調(diào)用。構(gòu)造函數(shù)的調(diào)用,是按照繼承的順序,從超類到子類進(jìn)行的。訪問被子類的成員覆蓋的父類成員。
classA{inti;voidshow(){System.out.println(”i=”+i);}}classBextendsA{inti;voidshow(){System.out.println(”i=”+i+“父類中的i”+super.i);}}方法覆蓋方法覆蓋是Java語(yǔ)言實(shí)現(xiàn)多態(tài)性機(jī)制的另一種方式,也稱方法的重寫。在類層次結(jié)構(gòu)中,如果子類中的一個(gè)方法與父類中的方法有相同的方法名并具有相同數(shù)量和類型的參數(shù)列表,不同之處只有方法體,這種情況稱為方法覆蓋。當(dāng)一個(gè)覆蓋方法通過父類引用被調(diào)用時(shí),Java語(yǔ)言根據(jù)當(dāng)前被引用對(duì)象的類型來決定執(zhí)行哪個(gè)版本的方法??梢酝ㄟ^super關(guān)鍵字調(diào)用直接父類中覆蓋的方法。classA{
doublef(intx,doubly){...}}classBextendsA{doublef(intx,doubly){...}}多態(tài)多態(tài)就是一個(gè)類有其他的表示方式,但彼此之間必須是繼承的關(guān)系,多態(tài)能夠?qū)崿F(xiàn)動(dòng)態(tài)方法分配。Animal類:-leg-kindAnimal()eat()move()getLegs()setLegs()Fish:Fish()move()Bird:Bird()move()Lion:Lion()Ostrich:Ostrich()move()hideHead注意:1.不管用哪種引用表示對(duì)象,歸根到底表示的是實(shí)例化時(shí)所生成的對(duì)象。2.當(dāng)把某對(duì)象用其他引用表示時(shí),則只能使用該引用所提供的屬性和方法。3.如父類有方法被子類重寫,則以父類引用調(diào)用該方法時(shí),會(huì)執(zhí)行子類的方法。方法覆蓋示例classA{inti,j;voidshow(){System.out.println(”i=”+i+”,j=”+j);}}classBextendsA{intk;voidshow(){System.out.println(”i=”+i+”,j=”+j+”,k=”+k);}}classInheDemo{publicstaticvoidmain(Stringargs[]){Aobj1=newA();Aobj2=newB();Bobj3=newB();obj1.show();obj2.show();obj3.show();}}抽象方法用abstract修飾的方法稱為抽象方法。抽象方法是一種只有方法頭、而沒有具體方法的方法。如:classAbstractTest{abstractvoidabstractmethod();}注意:抽象方法只有方法頭的聲明,用;代替方法體,沒有大括號(hào){}。
抽象方法抽象類超類中只定義了讓所有子類共享的抽象方法,具體的細(xì)節(jié)需要子類去實(shí)現(xiàn),這樣的超類很抽象,稱為抽象類。注意,抽象類是不可使用的,或者說不能實(shí)例化對(duì)象。(但可以有構(gòu)造函數(shù))當(dāng)子類繼承一個(gè)抽象類時(shí),它必須重寫父類的所有抽象方法,否則,子類也必須定義為抽象類。abstractclassEmployee{ intbasic=2000;
abstractvoidsalary();//抽象方法}classManagerextendsEmployee{voidsalary(){ System.out.println("薪資等于"+basic*5);}}
classWorkerextendsEmployee{voidsalary(){ System.out.println("薪資等于"+basic*2);}}在子類中提供實(shí)現(xiàn)在子類中提供實(shí)現(xiàn)抽象方法沒有方法主體接口Java程序一次只能繼承一個(gè)類。如果想實(shí)現(xiàn)多繼承可以通過接口實(shí)現(xiàn)。接口是一種特殊的類,是一些抽象方法和固定變量的集合。接口不能有任何具體的方法,必須全是抽象方法;在接口中也可以聲明變量,但必須是常量類型。接口可以通過關(guān)鍵字interface定義。通過接口可以實(shí)現(xiàn)不相關(guān)類的相同行為,而不需考慮這些類之間的層次關(guān)系。接口的定義//含抽象方法的接口interfacemyinterface{abstractintadd(intx,inty); abstractvoidvolume(intx,inty,intz);}//定義包含常量的接口interfacemyconstants{ publicstaticfinaldoubleprice=1450.00;publicstaticfinalintcounter=5;}定義一個(gè)接口:實(shí)現(xiàn)接口用關(guān)鍵字implements實(shí)現(xiàn)接口,例如:classdemoimplementsmyinterface在類中對(duì)接口里面的方法進(jìn)行重寫(實(shí)現(xiàn))即可如果有一個(gè)以上接口的被實(shí)現(xiàn),則用逗號(hào)隔開接口名稱,如下所示:
classdemoimplementsMycalc,Mycount接口使用示例interfaceA{doubleg=9.8;voidshow();}classInterfaceTest{publicstaticvoidmain(Stringargs[]){Bb=newB();b.show();}}classBimplementsA{publicvoidshow(){System.out.println(“g=“+g);}}省略修飾符接口引用接口不能包含構(gòu)造函數(shù),也就是說,接口不能實(shí)例化對(duì)象。但可以用接口名去引用一個(gè)對(duì)象,該對(duì)象必須是由實(shí)現(xiàn)了接口的類所實(shí)例化的對(duì)象。interfaceA{
doublef(intx,doubly);}classBimplementsA{doublef(intx,doubly){...}}Bobj1=newB();Aobj2=newB();obj1.f(1,2);obj2.f(3,4);包為了管理類和接口,Java體系制定了包的概念,包是類、接口和子包的集合,利用包可以將用途相近但功能不同的類或接口放在一起,就像在文件夾中,使類的管理更清晰。包是一種松散的類集合,一般不要求處于同一個(gè)包中的類有明確的相互關(guān)系,如包含、繼承等。包也稱為類庫(kù)。建立包創(chuàng)建一個(gè)包的語(yǔ)法:package包名;如果java源文件省略了package語(yǔ)句,在該文件中所有類被包含在一個(gè)默認(rèn)的沒有名稱的包中。在java中,可以創(chuàng)建一個(gè)多層次包,只要在每個(gè)包與上層包之間用“.”分隔開,如下所示:packagepkg1.pkg2.pkg3;在創(chuàng)建包后還需要在操作系統(tǒng)當(dāng)前目錄下創(chuàng)建一個(gè)與該包匹配的文件夾結(jié)構(gòu)。導(dǎo)入包導(dǎo)入一個(gè)包的語(yǔ)法:import包名.*;導(dǎo)入一個(gè)包時(shí),應(yīng)使用包名稱加類名稱的形式。如引入上例中的pkg3中的類,可寫入以下語(yǔ)句:importpkg1.pkg2.pgk3.類名;為了在任何地方都可使用的自定義的包,可將當(dāng)前存放自定義包的目錄加到classpath中。訪問控制符Java語(yǔ)言提供的訪問控制符范圍同一個(gè)類同一個(gè)包不同包的子類不同包的非子類Java語(yǔ)言的訪問控制符有public公共訪問控制符
private私有訪問控制符protected保護(hù)訪問控制符默認(rèn)訪問控制符其中,修使類的訪問控制符可以是:public或默認(rèn)訪問控制符,修飾域或方法的可以上面的任何一種。注意,public會(huì)造成安全性和數(shù)據(jù)封裝性下降,所以一般應(yīng)減少使用public。同一個(gè)類中同一個(gè)包中不同包中的子類不同包中的非子類private允許protected允許允許允許public允許允許允許允許friendly允許允許常見的系統(tǒng)包包名包含內(nèi)容java.applet提供創(chuàng)建applet小程序所需要的類java.awt包含用于創(chuàng)建用戶界面和繪制圖形圖像的所有類java.beans包含與開發(fā)beans有關(guān)的類java.io提供與輸入和輸出相關(guān)的類java.lang提供Java語(yǔ)言程序設(shè)計(jì)的基礎(chǔ)類提供實(shí)現(xiàn)網(wǎng)絡(luò)操作的類java.sql提供實(shí)現(xiàn)數(shù)據(jù)庫(kù)訪問功能的類java.text提供處理文本、日期、數(shù)字和消息的類和接口java.util提供處理日期、時(shí)間、隨機(jī)數(shù)生成等各種實(shí)用工具的類提供用于網(wǎng)絡(luò)應(yīng)用程序的類javax.swing提供一組與AWT功能相同的純Java的組件類Java是一種面向?qū)ο笳Z(yǔ)言,Java中的類把方法與數(shù)據(jù)連接在一起,并構(gòu)成了自包含式的處理單元。但在Java中不能定義基本類型(primitivetype),為了能將基本類型視為對(duì)象來處理,并能使用相關(guān)的方法,Java為每個(gè)基本類型都提供了封裝類。這樣,我們便可以把這些基本類型轉(zhuǎn)化為對(duì)象來處理數(shù)據(jù)封裝類數(shù)據(jù)類型封裝類booleanBooleanbyteBytecharCharacterdoubleDoublefloatFloatintIntegerlongLongshortShortObject類Object類包括在java.lang
包中,被稱為根類,是Java類體系結(jié)構(gòu)的根。Java語(yǔ)言中的每個(gè)類都是Object
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)合規(guī)采購(gòu)廉政協(xié)議書
- 城市綠化帶標(biāo)志牌設(shè)計(jì)與施工合同
- 快餐連鎖店特許經(jīng)營(yíng)合同
- 桉樹種植基地承包與林業(yè)生態(tài)修復(fù)合作協(xié)議
- 蛋白質(zhì)亞細(xì)胞定位
- 內(nèi)科護(hù)理學(xué)肺部感染護(hù)理
- 學(xué)校新團(tuán)員培訓(xùn)
- 古代詩(shī)歌鑒賞(2025年5月各地高考卷分類匯編一)-2025年高考語(yǔ)文復(fù)習(xí)(新高考專用)解析版
- 工業(yè)自動(dòng)化專業(yè)(初級(jí))模擬考試題與參考答案解析
- 護(hù)理禮儀大賽展示
- 江蘇省南通市海門區(qū)2023-2024學(xué)年七年級(jí)下學(xué)期期末數(shù)學(xué)試題
- 人音版八年級(jí)音樂上冊(cè)(簡(jiǎn)譜)第三單元《天路》教學(xué)設(shè)計(jì)
- 第六章+平面向量及其應(yīng)用+小結(jié) 高一下學(xué)期數(shù)學(xué)人教A版(2019)必修第二冊(cè)
- 2024年山東省聊城市冠縣中考一模英語(yǔ)試題(原卷版)
- 山東省青島市平度市2024屆中考二模語(yǔ)文試題含解析
- 國(guó)開可編程控制器應(yīng)用形考實(shí)訓(xùn)任務(wù)六
- 周志華-機(jī)器學(xué)習(xí)-Chap01緒論-課件
- 電力儲(chǔ)能用鋰離子電池
- 華為MPR+LTC項(xiàng)目項(xiàng)目總體方案+P183
- 自然資源調(diào)查監(jiān)測(cè)技能競(jìng)賽理論考試題庫(kù)大全-中(多選題)
- 水質(zhì)監(jiān)測(cè)服務(wù)水質(zhì)自動(dòng)監(jiān)測(cè)系統(tǒng)運(yùn)行維護(hù)方案
評(píng)論
0/150
提交評(píng)論