第四章 類(lèi)與對(duì)象_第1頁(yè)
第四章 類(lèi)與對(duì)象_第2頁(yè)
第四章 類(lèi)與對(duì)象_第3頁(yè)
第四章 類(lèi)與對(duì)象_第4頁(yè)
第四章 類(lèi)與對(duì)象_第5頁(yè)
已閱讀5頁(yè),還剩59頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第四章類(lèi)與對(duì)象第一頁(yè),共六十四頁(yè),編輯于2023年,星期五基本內(nèi)容第二頁(yè),共六十四頁(yè),編輯于2023年,星期五類(lèi)和對(duì)象的基本知識(shí)什么是類(lèi)什么是對(duì)象類(lèi)和對(duì)象的關(guān)系如何用Java來(lái)實(shí)現(xiàn)類(lèi)成員變量(屬性)成員方法(函數(shù)、行為、過(guò)程)構(gòu)造方法如何創(chuàng)建和使用對(duì)象對(duì)象的引用合和實(shí)體實(shí)例變量和類(lèi)變量實(shí)例方法和類(lèi)方法this關(guān)鍵字第三頁(yè),共六十四頁(yè),編輯于2023年,星期五什么是類(lèi)思考:如何向別人描述一個(gè)陌生的事物?類(lèi)比:動(dòng)物園里如何介紹動(dòng)物?結(jié)論:現(xiàn)實(shí)生活中無(wú)論任何事物,我們都可以用屬性和行為這兩個(gè)方面把它描述清楚。事物分類(lèi)標(biāo)準(zhǔn)(好學(xué)生與壞學(xué)生,學(xué)生和老師)結(jié)論:通過(guò)屬性和行為對(duì)不同事物分類(lèi)類(lèi)定義:類(lèi)是具有相同屬性和行為的一組對(duì)象的集合。第四頁(yè),共六十四頁(yè),編輯于2023年,星期五什么是對(duì)象對(duì)男生而言,女朋友是對(duì)象嗎?對(duì)象的定義:把符合某類(lèi)標(biāo)準(zhǔn)的一個(gè)具體的事物稱為這個(gè)類(lèi)的一個(gè)對(duì)象,也把對(duì)象稱為類(lèi)的實(shí)例。第五頁(yè),共六十四頁(yè),編輯于2023年,星期五類(lèi)與對(duì)象的關(guān)系第六頁(yè),共六十四頁(yè),編輯于2023年,星期五類(lèi)與對(duì)象的Java實(shí)現(xiàn)第七頁(yè),共六十四頁(yè),編輯于2023年,星期五類(lèi)的基本結(jié)構(gòu)classPeople//類(lèi)的聲明{ Stringname;//屬性,由變量實(shí)現(xiàn)

intage;

booleangender;

voidspeak(){}//行為,由方法實(shí)現(xiàn)

voidwalk(){}Stringread(Stringbook){}intadd(intx,inty){}}類(lèi)體第八頁(yè),共六十四頁(yè),編輯于2023年,星期五類(lèi)中的方法第九頁(yè),共六十四頁(yè),編輯于2023年,星期五方法的基本結(jié)構(gòu)第十頁(yè),共六十四頁(yè),編輯于2023年,星期五方法的代碼實(shí)現(xiàn)intadd(intx,inty){

intt=-1;if(x>=0&&y>=0)t=x+y;returnt;

}第十一頁(yè),共六十四頁(yè),編輯于2023年,星期五關(guān)于方法的注意事項(xiàng)1)在方法定義中,方法的返回類(lèi)型與return后面的變量或常量類(lèi)型保持一致。2)在方法調(diào)用時(shí),給方法傳遞的參數(shù)需要與方法定義時(shí)的參數(shù)保持一致(參數(shù)個(gè)數(shù)一致,參數(shù)類(lèi)型一致)。3)方法定義時(shí)的返回類(lèi)型與接收方法返回值的變量類(lèi)型保持一致。4)方法可以重載(特征:1、具有相同方法名,2、但參數(shù)個(gè)數(shù)或參數(shù)類(lèi)型不同)

第十二頁(yè),共六十四頁(yè),編輯于2023年,星期五創(chuàng)建類(lèi)第十三頁(yè),共六十四頁(yè),編輯于2023年,星期五問(wèn)題分析第十四頁(yè),共六十四頁(yè),編輯于2023年,星期五實(shí)現(xiàn)代碼第十五頁(yè),共六十四頁(yè),編輯于2023年,星期五值得注意的問(wèn)題類(lèi)名的首字符要求大寫(xiě)并符合標(biāo)識(shí)符命名規(guī)范除去屬性的聲明,其他代碼必須寫(xiě)在方法體(函數(shù))內(nèi)部。實(shí)例方法可以屬性(成員變量)和局部變量(如形式參數(shù)或方法體內(nèi)定義的變量)一個(gè)類(lèi)中的方法可以互相調(diào)用第十六頁(yè),共六十四頁(yè),編輯于2023年,星期五創(chuàng)建并使用對(duì)象第十七頁(yè),共六十四頁(yè),編輯于2023年,星期五創(chuàng)建并使用對(duì)象示例第十八頁(yè),共六十四頁(yè),編輯于2023年,星期五特殊說(shuō)明TestStudent類(lèi)為Student的測(cè)試類(lèi),也可以命名為RunStudent,其中包含一個(gè)特殊的方法main();暫時(shí)記住對(duì)象使用分兩步,聲明和創(chuàng)建,并且必須經(jīng)過(guò)創(chuàng)建才能使用方法部分由三個(gè)匹配,即聲明部分返回的類(lèi)型與方法體里具體返回的類(lèi)型與調(diào)用方法時(shí)承接的類(lèi)型。如返回int根據(jù)類(lèi)型自動(dòng)轉(zhuǎn)換用float可以承接。第十九頁(yè),共六十四頁(yè),編輯于2023年,星期五使用對(duì)象小結(jié)第二十頁(yè),共六十四頁(yè),編輯于2023年,星期五練習(xí)第二十一頁(yè),共六十四頁(yè),編輯于2023年,星期五構(gòu)造方法使用場(chǎng)景:完成初始化操作基本特點(diǎn):是特殊的方法,方法名與類(lèi)名相同并且沒(méi)有返回值。示例Student.java構(gòu)造方法的運(yùn)行機(jī)理,即什么時(shí)候被誰(shuí)調(diào)用第二十二頁(yè),共六十四頁(yè),編輯于2023年,星期五構(gòu)造方法特點(diǎn)小結(jié)第二十三頁(yè),共六十四頁(yè),編輯于2023年,星期五構(gòu)造方法的分類(lèi)顯式構(gòu)造方法:開(kāi)發(fā)者編寫(xiě),可以看到,因參數(shù)類(lèi)型和參數(shù)個(gè)數(shù)的不同,一個(gè)類(lèi)中可以有多個(gè)構(gòu)造函數(shù)(這種現(xiàn)象稱為構(gòu)造方法的重載)。隱式構(gòu)造方法:由編譯器生成,在源碼中我們看不見(jiàn)它,但在.class中存在。注意只有當(dāng)類(lèi)中沒(méi)有顯式構(gòu)造方法時(shí),系統(tǒng)才會(huì)添加隱式構(gòu)造方法。注意:構(gòu)造方法和普通方法一樣可以重載第二十四頁(yè),共六十四頁(yè),編輯于2023年,星期五成員變量與局部變量的區(qū)別局部變量使用前必須要聲明并賦初值;成員變量使用前必須要聲明,但可以不賦初值。

成員變量與局部變量的聯(lián)系與區(qū)別:a)無(wú)論是成員變量還是局部變量,使用前都需要聲明(定義)。b)對(duì)于局部變量來(lái)說(shuō),使用前必須要初始化;對(duì)于成員變量來(lái)說(shuō),使用前可以不初始化。如果沒(méi)有初始化成員變量就開(kāi)始使用,那么每個(gè)類(lèi)型的成員變量都有一個(gè)默認(rèn)的初始值:i.byte、short、int、long類(lèi)型的初始值為0ii.float、double類(lèi)型的初始值為0.0iii.char類(lèi)型的初始值‘\u0000’iv.boolean類(lèi)型的初始值為falseV.對(duì)象類(lèi)型的初始值為null,即空對(duì)象第二十五頁(yè),共六十四頁(yè),編輯于2023年,星期五對(duì)象的引用和實(shí)體第二十六頁(yè),共六十四頁(yè),編輯于2023年,星期五對(duì)象的引用與實(shí)體bababa第二十七頁(yè),共六十四頁(yè),編輯于2023年,星期五引用類(lèi)型---類(lèi)類(lèi)型引用類(lèi)型是用在對(duì)象上的。一個(gè)對(duì)象可以被多個(gè)引用所指向,但同一時(shí)刻,每個(gè)引用只能指向唯一的一個(gè)對(duì)象。如果一個(gè)對(duì)象被多個(gè)引用所指向,那么無(wú)論哪個(gè)引用對(duì)對(duì)象的屬性進(jìn)行了修改,都會(huì)反映到其他的引用當(dāng)中。引用類(lèi)型與基本類(lèi)型有本質(zhì)的不同(舉例說(shuō)明)第二十八頁(yè),共六十四頁(yè),編輯于2023年,星期五static關(guān)鍵字成員變量:實(shí)例變量和類(lèi)變量實(shí)例變量:相同類(lèi)的不同對(duì)象,其實(shí)例變量分配不同的內(nèi)存空間,分配時(shí)機(jī):對(duì)象被創(chuàng)建時(shí)訪問(wèn)方式:通過(guò)對(duì)象訪問(wèn)類(lèi)變量(用static修飾)同屬一個(gè)類(lèi)的所有對(duì)象的類(lèi)變量共享一塊內(nèi)存空間分配時(shí)機(jī):類(lèi)被加載時(shí),類(lèi)被加載后才能用來(lái)創(chuàng)建對(duì)象訪問(wèn)方式:通過(guò)類(lèi)名或?qū)ο笤L問(wèn)成員方法:實(shí)例方法和類(lèi)方法實(shí)例方法相同類(lèi)的不同對(duì)象,其實(shí)例方法共享同一入口地址創(chuàng)建類(lèi)的第一個(gè)對(duì)象時(shí)分配入口地址,創(chuàng)建其他對(duì)象時(shí)不再分配;訪問(wèn)方式:通過(guò)對(duì)象訪問(wèn),并能操作實(shí)例變量和類(lèi)變量。類(lèi)方法(用static修飾)分配時(shí)機(jī):類(lèi)被加載時(shí)訪問(wèn)方式:通過(guò)類(lèi)名或?qū)ο笤L問(wèn)注意:類(lèi)方法不能操作實(shí)例變量,為什么?能調(diào)用實(shí)例方法嗎?第二十九頁(yè),共六十四頁(yè),編輯于2023年,星期五this關(guān)鍵字this應(yīng)用于實(shí)例方法和構(gòu)造方法中,不能出現(xiàn)在類(lèi)方法中this可以簡(jiǎn)單理解為當(dāng)前對(duì)象第三十頁(yè),共六十四頁(yè),編輯于2023年,星期五類(lèi)與對(duì)象進(jìn)階參數(shù)傳值方法之間的相互調(diào)用傳值類(lèi)型類(lèi)作為參數(shù)類(lèi)型或返回值類(lèi)型的應(yīng)用類(lèi)的管理包Import語(yǔ)句訪問(wèn)權(quán)限PublicProtectedPrivate友好Public類(lèi)和友好類(lèi)第三十一頁(yè),共六十四頁(yè),編輯于2023年,星期五參數(shù)傳值方法被調(diào)用時(shí),如果有參數(shù),參數(shù)必須實(shí)例化(即參數(shù)變量必須有具體的值)傳值方式:按值傳遞傳值類(lèi)型:(演示兩種不同類(lèi)型的區(qū)別)基本數(shù)據(jù)類(lèi)型參數(shù)的傳值傳遞基本數(shù)據(jù)類(lèi)型變量的一個(gè)副本被傳值的類(lèi)型級(jí)別不高于參數(shù)類(lèi)型的級(jí)別引用類(lèi)型(對(duì)象、數(shù)組)參數(shù)的傳值傳遞參數(shù)的引用,而不是實(shí)體類(lèi)型要求兼容第三十二頁(yè),共六十四頁(yè),編輯于2023年,星期五作為普通類(lèi)型使用的類(lèi)類(lèi)看作是自己定義的一種數(shù)據(jù)類(lèi)型,可以象使用基本數(shù)據(jù)類(lèi)型那樣使用。類(lèi)作為一種數(shù)據(jù)類(lèi)型可以作為參數(shù)和方法的返回類(lèi)型類(lèi)比: 基本數(shù)據(jù)類(lèi)型的用法

intadd(intx,inty){returnx+y;}

引用類(lèi)型類(lèi)的用法

classpoint{intx;inty;}pointadd(pointp1,pointp2){pointp=newpoint();p.x=p1.x+p2.x;p.y=p1.y+p2.y;Returnp;}第三十三頁(yè),共六十四頁(yè),編輯于2023年,星期五包和import語(yǔ)句package包名一般為域名的逆反包的作用:對(duì)類(lèi)進(jìn)行有效管理,避免類(lèi)名沖突Import語(yǔ)句用于引入包中的類(lèi)第三十四頁(yè),共六十四頁(yè),編輯于2023年,星期五訪問(wèn)權(quán)限私有變量和私有方法用private

修飾在另外類(lèi)中創(chuàng)建的對(duì)象不能訪問(wèn)自己的私有變量和私有方法若為私有類(lèi)變量(類(lèi)方法),在另外類(lèi)中也不能通過(guò)類(lèi)名來(lái)操作這個(gè)私有類(lèi)變量(類(lèi)方法)。公有變量和公有方法用public修飾任何地方的類(lèi)能通過(guò)相關(guān)對(duì)象訪問(wèn),或通過(guò)類(lèi)名訪問(wèn)(類(lèi)變量或類(lèi)方法)受保護(hù)的成員變量和方法用protected修飾在同個(gè)包中的其它類(lèi)中,能通過(guò)相關(guān)對(duì)象或類(lèi)名訪問(wèn)對(duì)應(yīng)成員友好變量和友好方法沒(méi)有任何修飾符修飾在同個(gè)包中的其它類(lèi)中,能通過(guò)相關(guān)對(duì)象或類(lèi)名訪問(wèn)對(duì)應(yīng)成員public類(lèi)與友好類(lèi)public類(lèi):可以在任何類(lèi)中,使用public類(lèi)創(chuàng)建對(duì)象友好類(lèi):沒(méi)有public修飾的類(lèi),另外類(lèi)使用友好類(lèi)創(chuàng)建對(duì)象時(shí),要求這兩個(gè)類(lèi)在同一包中。第三十五頁(yè),共六十四頁(yè),編輯于2023年,星期五類(lèi)的繼承父類(lèi)(超類(lèi))和子類(lèi)(派生類(lèi)):子類(lèi)繼承父類(lèi)的屬性和方法,也可以增加自己的屬性和方法。語(yǔ)法形式:

class子類(lèi)名extends父類(lèi)名{

新增的屬性;新增的方法;

}Java中,子類(lèi)只能有一個(gè)父類(lèi)第三十六頁(yè),共六十四頁(yè),編輯于2023年,星期五子類(lèi)的繼承性子類(lèi)從父類(lèi)中繼承的成員,就如同在子類(lèi)中聲明的一樣,具有相同的訪問(wèn)特征。如果子類(lèi)中聲明的實(shí)例方法不能操作父類(lèi)的某個(gè)成員變量,則該成員變量就沒(méi)被繼承。子類(lèi)與父類(lèi)在同一包中的繼承性子類(lèi)能繼承父類(lèi)中除了用private修飾的成員以外的所有成員,并且成員的訪問(wèn)權(quán)限保持不變。子類(lèi)與父類(lèi)不在同一包中的繼承性子類(lèi)繼承父類(lèi)的protected、public修飾的成員第三十七頁(yè),共六十四頁(yè),編輯于2023年,星期五成員變量的隱藏和方法的重寫(xiě)成員變量的隱藏子類(lèi)中聲明的成員變量與父類(lèi)中的成員變量同名成員方法的隱藏重寫(xiě)父類(lèi)中出現(xiàn)過(guò)的方法,該方法要求方法名、返回類(lèi)型、參數(shù)個(gè)數(shù)和類(lèi)型嚴(yán)格一致,即除了方法體以外其他部分完全相同。子類(lèi)對(duì)象調(diào)用隱藏方法時(shí),調(diào)用的是重寫(xiě)的方法若真想調(diào)用父類(lèi)中被隱藏的方法,則需要通過(guò)super關(guān)鍵字重寫(xiě)方法可以操作繼承的成員變量,當(dāng)然也能操作子類(lèi)中聲明的成員變量

第三十八頁(yè),共六十四頁(yè),編輯于2023年,星期五final關(guān)鍵字可以修飾類(lèi)、方法、成員變量和方法中的參數(shù)修飾類(lèi)時(shí),說(shuō)明該類(lèi)不能被繼承,即沒(méi)子類(lèi)修飾方法時(shí),則該方法不能被重寫(xiě)修飾成員變量,即該成員變量為常量(必須給初值),不能再賦值修飾方法中的參數(shù),則該參數(shù)的值不能被改變第三十九頁(yè),共六十四頁(yè),編輯于2023年,星期五4.9對(duì)象的上轉(zhuǎn)型對(duì)象

假設(shè)B類(lèi)是A類(lèi)子類(lèi)或間接子類(lèi),當(dāng)我們用子類(lèi)B創(chuàng)建一個(gè)對(duì)象,并把這個(gè)對(duì)象的引用放到A類(lèi)的對(duì)象中時(shí):

Aa;Bb=newB();a=b;稱這個(gè)A類(lèi)對(duì)象:a,是子類(lèi)對(duì)象b的上轉(zhuǎn)型對(duì)象.

即父類(lèi)引用指向子類(lèi)對(duì)象。對(duì)象的上轉(zhuǎn)型對(duì)象的實(shí)體是子類(lèi)負(fù)責(zé)創(chuàng)建的,但上轉(zhuǎn)型對(duì)象會(huì)失去原子類(lèi)對(duì)象的一些屬性和功能。第四十頁(yè),共六十四頁(yè),編輯于2023年,星期五上轉(zhuǎn)對(duì)象不能操作子類(lèi)新增的成員變量(失掉了這部分屬性);不能使用子類(lèi)新增的方法(失掉了一些功能)。上轉(zhuǎn)型對(duì)象可以操作子類(lèi)繼承或隱藏成員變量,也可以使用子類(lèi)繼承的或重寫(xiě)的方法。上轉(zhuǎn)型對(duì)象操作子類(lèi)繼承或重寫(xiě)的方法時(shí),就是通知對(duì)應(yīng)的子類(lèi)對(duì)象去調(diào)用這些方法。因此,如果子類(lèi)重寫(xiě)了父類(lèi)的某個(gè)方法后,對(duì)象的上轉(zhuǎn)型對(duì)象調(diào)用這個(gè)方法時(shí),一定是調(diào)用了這個(gè)重寫(xiě)的方法。可以將對(duì)象的上轉(zhuǎn)型對(duì)象再?gòu)?qiáng)制轉(zhuǎn)換到一個(gè)子類(lèi)對(duì)象,這時(shí),該子類(lèi)對(duì)象又具備了子類(lèi)所有屬性和功能。第四十一頁(yè),共六十四頁(yè),編輯于2023年,星期五4.10多態(tài)性

多態(tài)性就是指父類(lèi)的某個(gè)方法被其子類(lèi)重寫(xiě)時(shí),可以各自產(chǎn)生自己的功能行為.當(dāng)一個(gè)類(lèi)有很多子類(lèi)時(shí),并且這些子類(lèi)都重寫(xiě)了父類(lèi)中的某個(gè)方法。那么當(dāng)我們把子類(lèi)創(chuàng)建的對(duì)象的引用放到一個(gè)父類(lèi)的對(duì)象中時(shí),就得到了該對(duì)象的一個(gè)上轉(zhuǎn)型對(duì)象,那么這個(gè)上轉(zhuǎn)的對(duì)象在調(diào)用這個(gè)方法時(shí)就可能具有多種形態(tài).第四十二頁(yè),共六十四頁(yè),編輯于2023年,星期五4.11abstract類(lèi)和abstract方法

用關(guān)鍵字abstract修飾的類(lèi)稱為abstract類(lèi)(抽象類(lèi))。abstractclassA{…}第四十三頁(yè),共六十四頁(yè),編輯于2023年,星期五abstract類(lèi)有如下特點(diǎn)

和普通的類(lèi)相比,abstract類(lèi)可以有abstract方法。對(duì)于abstract方法,只允許聲明,不允許實(shí)現(xiàn),而且不允許使用final修飾abstract方法。abstractclassA{abstractintmin(intx,inty);intmax(intx,inty){returnx>y?x:y;}}第四十四頁(yè),共六十四頁(yè),編輯于2023年,星期五abstract類(lèi)不能用new運(yùn)算創(chuàng)建對(duì)象

對(duì)于abstract類(lèi),我們不能使用new運(yùn)算符創(chuàng)建該類(lèi)的對(duì)象,需產(chǎn)生其子類(lèi),由子類(lèi)創(chuàng)建對(duì)象,如果一個(gè)類(lèi)是abstract類(lèi)的子類(lèi),它必須具體實(shí)現(xiàn)父類(lèi)的abstract方法,這就是為什么不允許使用final修飾abstract方法的原因。一個(gè)abstract類(lèi)只關(guān)心它的子類(lèi)是否具有某種功能,并不關(guān)心功能的具體行為,功能的具體行為由子類(lèi)負(fù)責(zé)實(shí)現(xiàn),抽象類(lèi)中的抽象方法可以強(qiáng)制子類(lèi)必須給出這些方法的具體實(shí)現(xiàn)。第四十五頁(yè),共六十四頁(yè),編輯于2023年,星期五4.12super關(guān)鍵字

子類(lèi)不繼承父類(lèi)的構(gòu)造方法,因此,子類(lèi)如果想使用父類(lèi)的構(gòu)造方法,必須在子類(lèi)的構(gòu)造方法中使用,并且必須使用關(guān)鍵字super來(lái)表示,而且super必須是子類(lèi)構(gòu)造方法中的頭一條語(yǔ)句。如果我們?cè)谧宇?lèi)中想使用被子類(lèi)隱藏了的父類(lèi)的成員變量或方法就可以使用關(guān)鍵字super。比如:super.x、super.play(),就是被子類(lèi)隱藏的父類(lèi)的成員變量x和方法play()。第四十六頁(yè),共六十四頁(yè),編輯于2023年,星期五4.13接口

Java不支持多繼承性,即一個(gè)類(lèi)只能有一個(gè)父類(lèi)。單繼承性使得Java簡(jiǎn)單,易于管理程序。為了克服單繼承的缺點(diǎn),Java使用了接口,一個(gè)類(lèi)可以實(shí)現(xiàn)多個(gè)接口。第四十七頁(yè),共六十四頁(yè),編輯于2023年,星期五1.接口的聲明與使用

使用關(guān)鍵字interface來(lái)定義一個(gè)接口。接口的定義和類(lèi)的定義很相似,分為接口的聲明和接口體。接口體中包含常量定義和方法定義兩部分。接口體中只進(jìn)行方法的聲明,不許提供方法的實(shí)現(xiàn),所以,方法的定義沒(méi)有方法體,且用分號(hào)“;”結(jié)尾。如:interfacePrintable{finalintMAX=100;voidadd();floatsum(floatx,floaty);}第四十八頁(yè),共六十四頁(yè),編輯于2023年,星期五接口的使用

一個(gè)類(lèi)通過(guò)使用關(guān)鍵字implements聲明自己使用一個(gè)或多個(gè)接口。如果使用多個(gè)接口,用逗號(hào)隔開(kāi)接口名。如:classAimplementsPrintable,Addable如果一個(gè)類(lèi)使用了某個(gè)接口,那么這個(gè)類(lèi)必須實(shí)現(xiàn)該接口的所有方法,即為這些方法提供方法體.第四十九頁(yè),共六十四頁(yè),編輯于2023年,星期五2.理解接口

接口的思想在于它可以增加很多類(lèi)都需要實(shí)現(xiàn)的功能,使用相同的接口類(lèi)不一定有繼承關(guān)系.同一個(gè)類(lèi)也可以實(shí)現(xiàn)多個(gè)接口。接口只關(guān)心功能,并不關(guān)心功能的具體實(shí)現(xiàn).第五十頁(yè),共六十四頁(yè),編輯于2023年,星期五3.接口回調(diào)

接口回調(diào)是指:可以把實(shí)現(xiàn)某一接口的類(lèi)創(chuàng)建的對(duì)象的引用賦給該接口聲明的接口變量中。那么該接口變量就可以調(diào)用被類(lèi)實(shí)現(xiàn)的接口中的方法。實(shí)際上,當(dāng)接口變量調(diào)用被類(lèi)實(shí)現(xiàn)的接口中的方法時(shí),就是通知相應(yīng)的對(duì)象調(diào)用接口的方法.第五十一頁(yè),共六十四頁(yè),編輯于2023年,星期五4.接口做參數(shù)

一個(gè)方法的參數(shù)是接口類(lèi)型,就可以將任何實(shí)現(xiàn)該接口的類(lèi)的實(shí)例的引用傳遞給該接口參數(shù),接口參數(shù)就可以回調(diào)類(lèi)實(shí)現(xiàn)的接口方法。第五十二頁(yè),共六十四頁(yè),編輯于2023年,星期五4.14內(nèi)部類(lèi)

Java支持在一個(gè)類(lèi)中聲明另一個(gè)類(lèi),這樣的類(lèi)稱作內(nèi)部類(lèi),而包含內(nèi)部類(lèi)的類(lèi)成為內(nèi)部類(lèi)的外嵌類(lèi)。內(nèi)部類(lèi)的類(lèi)體中不可以聲明類(lèi)變量和類(lèi)方法。外嵌類(lèi)的類(lèi)體中可以用內(nèi)部類(lèi)聲明對(duì)象,作為外嵌類(lèi)的成員。第五十三頁(yè),共六十四頁(yè),編輯于2023年,星期五4.15匿名類(lèi)

和類(lèi)有關(guān)的匿名類(lèi)當(dāng)使用類(lèi)創(chuàng)建對(duì)象時(shí),程序允許我們把類(lèi)體與對(duì)象的創(chuàng)建組合在一起,也就是說(shuō),類(lèi)創(chuàng)建對(duì)象時(shí),除了構(gòu)造方法還有類(lèi)體,此類(lèi)體被認(rèn)為是該類(lèi)的一個(gè)子類(lèi)去掉類(lèi)聲明后的類(lèi)體,稱作匿名類(lèi)。和接口有關(guān)的匿名類(lèi)

Java允許直接用接口名和一個(gè)類(lèi)體創(chuàng)建一個(gè)匿名對(duì)象,此類(lèi)體被認(rèn)為是實(shí)現(xiàn)了接口的類(lèi)去掉類(lèi)聲明后的類(lèi)體,稱作匿名類(lèi).第五十四頁(yè),共六十四頁(yè),編輯于2023年,星期五4.16異常類(lèi)

程序運(yùn)行出現(xiàn)異常時(shí),Java運(yùn)行環(huán)境就用異常類(lèi)Exception的相應(yīng)子類(lèi)創(chuàng)建一個(gè)異常對(duì)象,并等待處理,例如,讀取一個(gè)不存在的文件時(shí),運(yùn)行環(huán)境就用異常類(lèi)IOException創(chuàng)建一個(gè)對(duì)象,異常對(duì)象可以調(diào)用如下方法得到或輸出有關(guān)異常的信息:publicStringgetMessage()publicvoidprintStackTrace()publicStringtoString()第五十五頁(yè),共六十四頁(yè),編輯于2023年,星期五使用try~catch語(yǔ)句來(lái)處理異常,將可能出現(xiàn)的異常操作放在try~catch語(yǔ)句的try部分,當(dāng)try部分中的某個(gè)語(yǔ)句發(fā)生異常后,try部分將立刻結(jié)束執(zhí)行,而轉(zhuǎn)向執(zhí)行相應(yīng)的catch部分;所以程序可以將發(fā)生異常后的處理放在catch部分。try~catch語(yǔ)句可以由幾個(gè)catch組成,分別處理發(fā)生的相應(yīng)異常。第五十六頁(yè),共六十四頁(yè),編輯于2023年,星期五try~catch語(yǔ)句的格式如下:try{

包含可能發(fā)生異常的語(yǔ)句

}catch(ExceptionSubClass1e){}catch(ExceptionSubClass2e){}第五十七頁(yè),共六十四頁(yè),編輯于2023年,星期五4.17Class類(lèi)

Class是java.lang包中的類(lèi),該類(lèi)的實(shí)例用來(lái)封裝對(duì)象運(yùn)行時(shí)的狀態(tài)。當(dāng)一個(gè)類(lèi)被加載且創(chuàng)建對(duì)象時(shí),和該類(lèi)相關(guān)的一個(gè)類(lèi)型為Calss的對(duì)象就會(huì)自動(dòng)創(chuàng)建。Class類(lèi)本身不提供構(gòu)造方法,因此,不能使用new運(yùn)算符和構(gòu)造方法顯示地創(chuàng)建一個(gè)Class對(duì)象。任何對(duì)象調(diào)用getClass()方法都可以獲取和該對(duì)象相關(guān)的一個(gè)Class對(duì)象,這個(gè)Class對(duì)象調(diào)用如下的方法可以獲取創(chuàng)建對(duì)象的類(lèi)的有關(guān)信息.第五十八頁(yè),共六十四頁(yè),編輯于2023年,星期五使用Class實(shí)例化一個(gè)對(duì)象

創(chuàng)建對(duì)象最常用的方式就是使用new運(yùn)算符和類(lèi)的構(gòu)造方法,實(shí)際上我們也可以使用Class對(duì)象得到一個(gè)類(lèi)的實(shí)例。為了得到一個(gè)類(lèi)的對(duì)象,可以先得到一個(gè)和該類(lèi)相關(guān)的Class對(duì)象,做到這一點(diǎn)并不困難,只要使用Class的類(lèi)方法publicstaticClassforName(StringclassName)throwsClassNotFoundException就可以返回一個(gè)和參數(shù)className指定的類(lèi)相關(guān)的Class對(duì)象。再讓這個(gè)Class對(duì)象調(diào)用publicObjectnewInstance()throwsInstantiationException,IllegalAccessException方法就可以得到一個(gè)className類(lèi)的對(duì)象。第五十九頁(yè),共六十四頁(yè),編輯于2023年,星期五4.18基本類(lèi)型的類(lèi)包裝

Java的基本數(shù)據(jù)類(lèi)型包括:byte、int、short、long、float、double、char。Java同時(shí)也提供了基本數(shù)據(jù)類(lèi)型相關(guān)的類(lèi),實(shí)現(xiàn)了對(duì)基本數(shù)據(jù)類(lèi)型的封裝。這些類(lèi)在java.lang包中,分別是:Byte、Integer、Short

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論