版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第七組
2015.11.12
第七章繼承與多態(tài)要點(diǎn)繼承和多態(tài)的基本概念派生類的聲明和使用Super關(guān)鍵字構(gòu)造方法的繼承和條用類成員變量的繼承和隱藏類方法的重寫抽象類和抽象方法密封類和密封方法接口的聲明和使用多態(tài)繼承概述繼承:是面向?qū)ο蟪绦蛟O(shè)計(jì)的只要特征之一
允許重用現(xiàn)有類(基類(baseclass),亦稱超類(superclass);父類(parentclass))創(chuàng)建新類(子類(subclass),亦稱派生類(derivedclass);孩子類(childclass))的過程。
子類將繼承基類的所有數(shù)據(jù)和行為,還可以定義其他數(shù)據(jù)或行為。繼承的類型:
類繼承和接口繼承繼承的層次關(guān)系:在JAVA中,說有的類都繼承與Object.類的繼承不僅限于一個(gè)層次,即基類可以派生出自己的子類,子類又可以派生出自己的子類;如:交通工具可以分為汽車,飛機(jī),火車等;飛機(jī)又可分為戰(zhàn)斗機(jī),客運(yùn)機(jī);火車又可分為動(dòng)車組,高速列車等;汽車按功能又可分為越野車,旅游車,跑車等。但JAVA中語言的類不支持重繼承,因而,所有類的集合形成如下圖的樹狀繼承層次關(guān)系。繼承概述ObjectCharacterBooleanNumberByteShortIntegerLongFloatDoubleString繼承的層次關(guān)系簡單類型封裝類的繼承層次關(guān)系繼承派生類的聲明Super關(guān)鍵字類成員的繼承構(gòu)造方法的繼承和調(diào)用類成員變量的隱藏類方法的重寫抽象類和抽象方法密封類和密封方法派生類的聲明
在聲明派生類時(shí),可以指定要繼承的類(即基類);如果在類定義中沒有指定基類,則Object是基類,派生類使用關(guān)鍵字extends指定要繼承的基類;派生類聲明的基本形式:[類修飾符]class類名[extends基類]{
類體;}Extends是用來實(shí)現(xiàn)繼承JAVA不支持多重繼承,即一個(gè)派生類只能繼承于一個(gè)基類。classPoint{//基類。等同于classPointextendsObjectintx,y;}classColoredPointextendsPoint{//派生類,從Point派生intcolor;}classColored3dPointextendsColoredPoint{//派生類,從ColoredPoint派生intz;}派生類的聲明Point是ColoredPoint和Colored3dPoint的基類Point是ColoredPoint的直接基類;
ColoredPoint是Colored3dPoint的直接基類;ColoredPoint和Colored3dPoint是Point的派生類;ColoredPoint是Point的直接派生類;Colored3dPoint是ColoredPoint的直接派生類;Super關(guān)鍵字Super關(guān)鍵字:
主要功能是完成子類在覆蓋了父類中的方法后調(diào)用子類所復(fù)制的父類的字段和方法。用于從派生類中訪問基類成員。(1).指定創(chuàng)建派生類實(shí)例時(shí)調(diào)用的基類構(gòu)造方法;
Super(參數(shù))(2).調(diào)用基類上已被其他方法重寫的方法;
Super.方法(參數(shù))(3).訪問基類的數(shù)據(jù)成員;
Super.字段名注:Super關(guān)鍵字只能在實(shí)例構(gòu)造方法,實(shí)例方法或?qū)嵗L問器中使用。實(shí)例:classPerson{publicStringname;publicintage;publicPerson(Stringname,intege){=name;this.age=age;}publicvoidprint(){System.out.printf("name=%s,age=%d",,this.age);}}classStudentextendsPerson{publicStringstudentID;publicStudent(Stringname,intage,Stringid){super(name,age);this.studentID=id;}publicvoidprint(){super.print();System.out.printf(",studentID=%s,",this.studentID);}}classSuperDemo{publicstaticvoidmain(String[]args){Studentobjstudent=newStudent("張三",25,"2007101001");objstudent.print();}}最后運(yùn)行結(jié)果:實(shí)例:類成員的繼承派生類繼承基類中除構(gòu)造方法以外的成員。即派生類繼承其基類(包括基類的超類)的所有成員(除構(gòu)造方法以外),與基類成員的修飾符無關(guān);基類成員的訪問修飾符僅僅限制該成員的可見范圍。構(gòu)造方法的繼承和調(diào)用
構(gòu)造方法不能被繼承,也不能被覆蓋,因?yàn)闃?gòu)造方法的名稱與類名相同。通過關(guān)鍵字new創(chuàng)建對(duì)象實(shí)例,會(huì)根據(jù)傳入的參數(shù)調(diào)用相匹配的構(gòu)造方法,在調(diào)用構(gòu)造方法前,需要先調(diào)用其基類的構(gòu)造方法。三個(gè)如果:如果使用派生類的默認(rèn)構(gòu)造方法構(gòu)造對(duì)象實(shí)例,則會(huì)自動(dòng)調(diào)其基類的默認(rèn)構(gòu)造方法;如果基類沒有默認(rèn)的構(gòu)造方法,則會(huì)導(dǎo)致編譯錯(cuò)誤。如果使用派生類的其他構(gòu)造方法(帶參數(shù))構(gòu)造對(duì)象實(shí)例,則必須在派生類的構(gòu)造方法的第一條語句中,顯式地使用Super關(guān)鍵字調(diào)用其基類的構(gòu)造方法,否則會(huì)產(chǎn)生編譯錯(cuò)誤。類成員變量的隱藏成員變量的隱藏:
派生類繼承基類中的所有成員變量。如果在派生類中聲明了與繼承的成員變量同名的成員變量,則該重名成員變量將隱藏從基類繼承的同名成員變量稱為成員變量的隱藏。注:在派生類中引用該成員變量時(shí),實(shí)際上引用的是派生類中聲明的成員變量。如果需要引用從基類中繼承的同名成員變量,可使用Super關(guān)鍵字:
Super.變量名隱藏示例:classParent{publicStringname;publicStringsex;publicvoidsetName(Stringname){=name;}}classChildextendsParent{publicStringname;publicChild(Stringname,Stringsex){=name;this.sex=sex;=name+"'sparent";}publicvoidprint(){System.out.println(name+""+sex+""+);}}publicclassHiddenFieldDemo{publicstaticvoidmain(String[]args){Childobj1=newChild("Mary","E");obj1.print();Childobj2=newChild("Jack","E");="Jackie";obj2.sex="M";obj2.print();}}隱藏示例:運(yùn)行結(jié)果如下所示:類方法的重寫
派生類繼承基類中的所有成員方法,同時(shí)也可以在派生類中定義新方法。1.全新方法:
方法的簽名唯一,即與從基類繼承的所有的方法簽名均不相同。全新方法是派生類定義的新方法,即是對(duì)基類功能的一種擴(kuò)展。
2.重載方法:方法名與從基類繼承的方法重名,但二者的方法簽名不同。
重載方法也是派生類定義的新方法,即是對(duì)基類功能的一種擴(kuò)展。3.重寫方法:方法簽名與從基類繼承的方法簽名相同。重寫方法隱藏從基類繼承的相同簽名的方法,重寫方法提供該方法的新實(shí)現(xiàn)。抽象類和抽象方法
抽象類(abstractclass)
將關(guān)鍵字abstract置于關(guān)鍵字class的前面可以將類聲明為抽象類。抽象類不能實(shí)例化。抽象類一般用于提供多個(gè)派生類可共享的級(jí)類的公共定義。例如:類庫可以定義一個(gè)包含基本功能的抽象類,并要求程序員在使用該類庫時(shí),通過創(chuàng)建派生類來提供自己的類實(shí)現(xiàn)。
抽象類與非抽象類相比,具有下列特征:抽象類與非抽象類相比,具有下列特征:
(1)抽象類不能直接實(shí)例化,對(duì)抽象類使用new運(yùn)算符號(hào)會(huì)導(dǎo)致編譯錯(cuò)誤??梢远x抽象類型的變量,但其值必須為null,或者是其派生的非抽象類的實(shí)例的應(yīng)用。(2)抽象類不能被密封。(3)允許(但不要求)抽象類包含抽象成員。(4)當(dāng)從抽象類派生非抽象類時(shí),這些非抽象必須實(shí)現(xiàn)所繼承的所有抽象成員,從而重寫那些抽象成員。
例如:
AbstractclassAbstractClass{//聲明類成員}抽象類和抽象方法抽象方法:在抽象類中通過將關(guān)鍵字abstract添加到實(shí)例方法的返回類型的前面定義抽象方法。抽象方法聲明引入一個(gè)新的虛方法,但不提供該方法的任何實(shí)際實(shí)現(xiàn),所以抽象方法的方法體只由一個(gè)分號(hào)去組成,而不是常規(guī)的方法塊。注:除了構(gòu)造方法,靜態(tài)方法和私有方法不能聲明為抽象方法外。其他任何方法均可聲明為抽象方法密封類和密封方法密封類(finalclass):
通過將關(guān)鍵字final置于關(guān)鍵字class的前面,可以將類聲明為最終類或密封類。注:密封類不能作為基類;也不能是抽象類。密封類主要用于防止非有意所的派生。密封類和密封方法FinalFinal修飾符主要用于防止非有意的派生,還能促使某些運(yùn)行時(shí)的優(yōu)化。FinalclassAbstractClass{//聲明類成員}FinalabstractclassFinalAbstractClass{//編譯錯(cuò)誤,類不能同時(shí)為Fiinal和abstract//聲明類成員}密封類和密封方法密封方法(finalmethod):當(dāng)實(shí)例方法包含final修飾符時(shí),稱該方法為最終方法,也稱為密封方法。使用final修飾符可以防止派生類進(jìn)一步重寫該方法。二.接口接口的聲明一個(gè)接口定義一個(gè)協(xié)定。接口本身不提供它所定義的成員的實(shí)現(xiàn),只指定實(shí)現(xiàn)該接口的類必須提供的成員,繼承接口的任何非抽象類型都必須實(shí)現(xiàn)接口的所有成員。
接口類似抽象基類,不能被實(shí)例化。接口中聲明的所有成員方法隱式的為public和abstract.接口可以包含抽象方法和靜態(tài)常量字段。接口聲明的基本形式如下:[接口修飾符]interface
接口名[extends
基接口列表]{接口體}[;]
接口的成員接口通常是公共契約,故一個(gè)接口中可以聲明零個(gè)或者多個(gè)成員,但只能包含其他的簽名,接口的成員包括從基接口繼承的成員和由接口本身聲明的成員,接口成員只能包含抽象方法和靜態(tài)常量字段。
接口的成員變量默認(rèn)為靜態(tài)常量字段(publicstaticfinal),但接口的成員變量不能帶除publicstaticfinal以外的任何修飾符。
接口的成員方法默認(rèn)為公共抽象方法(publicabstract),但接口的成員方法不能帶除publicabstract以外的任何修飾符,應(yīng)為默認(rèn)為公共抽象方法(publicabstract),所以建議不要帶任何修飾符。接口的實(shí)現(xiàn)接口的實(shí)現(xiàn)可以由類來實(shí)現(xiàn)。為了指示類實(shí)現(xiàn)了某種接口,在該類或結(jié)構(gòu)的基類列表中應(yīng)該包含該接口的標(biāo)識(shí)符。派生類使用關(guān)鍵字implements指定要實(shí)現(xiàn)的基接口列表。派生類實(shí)現(xiàn)接口的聲明的基本形式如下:[類修飾符]class類名[implements基接口列表]{
類體;}
在實(shí)現(xiàn)接口的非抽象中,必須實(shí)現(xiàn)從基接口中繼承的所有抽象成員,從而重寫這些抽象成員。類中的對(duì)應(yīng)重寫成員方法必須是公共的、非靜態(tài)的,并且與接口成員方法具有相同的簽名。
interfaceIDimensions{floatgetLength();floatgetwidth();}classBoximplementsIDimensions{floatlength;floatwidth;Box(floatlength,floatwidth){this.length=length;this.width=width;}publicfloatgetLengtf(){returnwidth;}}publicclassInterfaceDemo{publicstaticvoidmain(String[]arge){Boxbox1=newBox(30.0f,20.0f);System.out.printf("Length:%9.2f,Width:%9.2f",box1.getLength(),box1.getWidth());}}接口實(shí)現(xiàn)案例接口的繼承接口可以從零個(gè)或多個(gè)接口繼承,被繼承的接口稱為該接口的基接口。
接口使用關(guān)鍵字extends指定要繼承的接口,接口繼承聲明基本形式如下:
[接口修飾符]intenface接口名[extends基接口列表]{類體;
}
接口成員包括從基接口繼承的成員和由接口本身聲明的成員,故實(shí)現(xiàn)該接口的類必須實(shí)現(xiàn)接口本身聲明的成員以及該接口繼承的成員。
三.多態(tài)多態(tài)的概念通過繼承實(shí)現(xiàn)多態(tài)通過方法重載實(shí)踐多態(tài)性通過方法重寫實(shí)現(xiàn)多態(tài)性多態(tài)性綜合舉例多態(tài)多態(tài)的概念
在面向過程的程序設(shè)計(jì)中,函數(shù)不能重名,否則會(huì)產(chǎn)生歧義,從而導(dǎo)致編譯錯(cuò)誤;而在面向?qū)ο笤O(shè)計(jì)中,有時(shí)需要利用“重名”來提高程序的抽象度和簡潔性。派生類對(duì)象可以表示多個(gè)類型的能力,成為多態(tài)性。多態(tài)的概念類方法多態(tài)性的實(shí)現(xiàn)的兩種方式:(1).方法重載:可以聲明多個(gè)同名但參數(shù)的個(gè)數(shù),類型和順序不同的方法。編譯時(shí)根據(jù)參數(shù)(個(gè)數(shù),類型和順序)判定采用的方法。這種編譯時(shí)確定的模式,又稱為“靜態(tài)綁定”。(2).方法重寫:派生類聲明與從基類繼承的方法簽名一致
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版全新泥水工合同協(xié)議下載
- 2025年度智能場(chǎng)館租賃合同中保證金與押金管理細(xì)則3篇
- 2025年網(wǎng)絡(luò)投票系統(tǒng)開發(fā)與運(yùn)營合同范本3篇
- 2025年度特色餐飲文化體驗(yàn)館租賃經(jīng)營合同3篇
- 2025年教育機(jī)構(gòu)安保人員勞動(dòng)合同范本2篇
- 二零二五版飯店租賃合同合同履行監(jiān)督與評(píng)估機(jī)制2篇
- 2025年度大數(shù)據(jù)中心建設(shè)合同擔(dān)保協(xié)議書范本2篇
- 2024年規(guī)范化消石灰銷售協(xié)議模板版B版
- 二零二五版智慧城市建設(shè)監(jiān)理團(tuán)隊(duì)聘用合同3篇
- 2024美容院部分股份轉(zhuǎn)讓協(xié)議書
- SH/T 3046-2024 石油化工立式圓筒形鋼制焊接儲(chǔ)罐設(shè)計(jì)規(guī)范(正式版)
- 2024年??谑羞x調(diào)生考試(行政職業(yè)能力測(cè)驗(yàn))綜合能力測(cè)試題及答案1套
- 六年級(jí)數(shù)學(xué)質(zhì)量分析及改進(jìn)措施
- 一年級(jí)下冊(cè)數(shù)學(xué)口算題卡打印
- 2024年中科院心理咨詢師新教材各單元考試題庫大全-下(多選題部分)
- 真人cs基于信號(hào)發(fā)射的激光武器設(shè)計(jì)
- 【閱讀提升】部編版語文五年級(jí)下冊(cè)第三單元閱讀要素解析 類文閱讀課外閱讀過關(guān)(含答案)
- 四年級(jí)上冊(cè)遞等式計(jì)算練習(xí)200題及答案
- 法院后勤部門述職報(bào)告
- 2024年國信證券招聘筆試參考題庫附帶答案詳解
- 道醫(yī)館可行性報(bào)告
評(píng)論
0/150
提交評(píng)論