版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
內(nèi)容提要接口與抽象類引用類型的類型轉(zhuǎn)換其他修飾符類實例對象的創(chuàng)建過程教學(xué)要求重點掌握前三項內(nèi)容,最后一項內(nèi)容要理解。接口在Java中提到接口,有兩種含義:一是Java接口,Java語言中存在的結(jié)構(gòu),和類(class)相似,是一種Java引用類型;二是一個成員方法,即API。Java接口的定義有兩部分:接口頭和接口體。格式如下:[public|abstract]interface接口名[extends接口列表]{
常量聲明;
方法聲明;
}程序舉例interfaceT{
staticfinalStringS1="abc";
StringS2="def";//S2的修飾符和S1的相同
publicabstractvoidfunc1();
voidfunc2();//func2的修飾符和func1的相同
}接口的繼承與實現(xiàn)與類相似,接口之間可以有繼承關(guān)系,而與類的單繼承不同的是,接口的繼承允許多重繼承。例如,若已經(jīng)定義了兩個接口A、B,可以定義C來繼承A和B。如下:interfaceCextendsA,B{//多個父接口之間用逗號分隔
......
}一個具體的類采用implements關(guān)鍵字來實現(xiàn)它,例如:classDimplementsA,B{
......
}實現(xiàn)類也可以是抽象類,這時是部分實現(xiàn)了接口。抽象類類與接口是兩個極端的情況,前者是所有方法都得到了實現(xiàn),后者是所有方法都沒有實現(xiàn)。在程序設(shè)計過程中,有時還需要一種中間狀態(tài),那就是只需要部分方法實現(xiàn),其余的是抽象方法,這就是抽象類存在的必要性。當然抽象類中的方法可以全部都是抽象的,也可以全部都是實現(xiàn)的,這是兩種極端的情況。定義一個抽象類的語法是:[訪問修飾符]abstractclass抽象類名{
abstractvoidfunc();
......
}說明(1)抽象類必須采用修飾符abstract。(2)含有抽象方法的類必須聲明為抽象類。(3)抽象類不能使用關(guān)鍵字new實例化,但抽象類可以有構(gòu)造方法。(4)抽象類是一種特殊的類,遵循類的單繼承規(guī)則和(單/多)接口實現(xiàn)規(guī)則。一個類可以在繼承一個父類的同時,實現(xiàn)一個或多個接口,例如:classDextendsCimplementsA,B{
......
}其中A、B是兩個接口,C是父類。引用類型的類型轉(zhuǎn)換自動類型轉(zhuǎn)換在具有繼承關(guān)系的類與類之間,或者接口與接口之間,或者具有實現(xiàn)關(guān)系的接口和類之間,由下層類型向上層類型轉(zhuǎn)換時,發(fā)生自動類型轉(zhuǎn)換。自動類型轉(zhuǎn)換也稱為類型自動提升。1interfaceI{
2publicvoidfun();
3}
4
5classT1implementsI{
6publicvoidfun(){}
7}
8
9classT2extendsT1{}
10
11classTest{
12publicstaticvoidmain(String[]args){
13Ii=newT1();//合法,發(fā)生自動類型轉(zhuǎn)換
14i=newT2();//合法
15T1t1=newT2();//合法
16}
17}強制類型轉(zhuǎn)換在具有繼承關(guān)系的類之間或者具有實現(xiàn)關(guān)系的接口和類之間,由上層類型向下層類型轉(zhuǎn)換時,發(fā)生強制類型轉(zhuǎn)換,注意其前提是對象的類型必須是轉(zhuǎn)換目標類型本身或者是其子孫類型,即objinstanceofRefType表達式的值為true時,否則不能轉(zhuǎn)換。例程1interfaceI{
2publicvoidfun();
3}
4classT1{
5publicvoidfun(){}
6}
7classT2extendsT1{}
8classT3extendsT2{}
9
10classKextendsT1{}
11
12classTest{
13publicstaticvoidmain(String[]args){
14T1t1=newT3();
15T2t2=(T2)t1;//合法,發(fā)生強制類型轉(zhuǎn)換
16T3t3=(T3)t2;//合法
17t3=(T3)t1;//合法
18
19t1=newT1();
20t2=(T2)t1;//非法,因為t1指向的對象是T1類型的
21
22t1=newK();
23t2=(T2)t1;//非法,因為雖然T2,K都繼承了T1,但t1
24//指向的對象是K類型的,不是T2類型的
25
26Ka=newK();
27Ib=(I)a;//合法28t1=(T1)b;//合法
29t2=(T2)b;//非法
30Kc=(K)b;//合法
31c=(K)t1;//合法
32}
33}自動打包/拆包機制從JDK1.5中引入了一個新的機制,基本類型的自動打包和其對應(yīng)的引用類型的自動拆包機制。在JDK1.5之前,基本類型與其封裝類之間的轉(zhuǎn)換作如下處理(以int類型為例):inti=123;
Integeric=newInteger(i);//把基本類型打包為一個對象
i=Value();//把一個對象拆包為基本類型而在JDK1.5及以后的版本中,可以如下使用:inti=123;
Integeric=i;//自動把i打包成對象
i=ic;//自動把ic拆包為基本類型這是一個很好的改進,方便了編程。其他修飾符finalstaticnativetransientstrictfpvolatileassertfinal修飾符final是最終、最后的意思,即不能再發(fā)生變化、終結(jié)了。因此,若final修飾變量(不管是局部變量還是成員變量),則變量一旦被賦值后就不能再改變其值了;若final修飾方法,則該方法就不能再被覆蓋了,因為要動態(tài)(即在程序運行過程中)修改方法的功能的辦法就是采用覆蓋;若采用final修飾類,則該類就不能再被繼承,當然final類的方法也就不能被覆蓋了,這是因為動態(tài)修改類的定義的辦法只能是在繼承的基礎(chǔ)上修改,而覆蓋的前提是能夠繼承,現(xiàn)在繼承都不允許了,當然其方法也就不能被覆蓋了。staticstatic修飾符可以修飾:①成員屬性;②成員方法;③代碼塊。static不能修飾方法內(nèi)的局部變量(包括方法體內(nèi)的局部變量和形式參數(shù))。native一個native方法(也稱作本地方法)就是一個Java程序調(diào)用非Java代碼的接口。native方法的實現(xiàn)采用非Java語言實現(xiàn),比如C、Fortran、匯編語言等。這個特征并非Java所特有,很多其他的編程語言都有這一機制,比如在C++中,可以用extern"C"告知C++編譯器去調(diào)用一個C的函數(shù)。因為在外部實現(xiàn)了方法,所以在java代碼中,只需要聲明方法頭就可以了,類似Java抽象方法的聲明那樣。native可以和其他一些修飾符連用,但是abstract方法和接口方法不能用native來修飾。transienttransient只能修飾類的成員變量,標記為transient的變量,在類實例對象被存儲(也稱為序列化)時,這些變量狀態(tài)不會被持久化,詳情見7.4.4節(jié)。strictfp(strictfloatpoint)意思是精確計算浮點數(shù)。在Java虛擬機進行浮點運算時,如果沒有指定strictfp關(guān)鍵字,Java的編譯器以及運行環(huán)境在對浮點運算的表達式采取一種近似于我行我素的行為,以致于得到的結(jié)果往往無法令人滿意。而一旦使用了strictfp來聲明一個類、接口或者方法時,那么Java編譯器以及運行環(huán)境會依照浮點規(guī)范IEEE-754來執(zhí)行精確的浮點計算。因此如果你想讓你的浮點運算更加精確,而且不會因為不同的硬件平臺所執(zhí)行的結(jié)果不一致的話,那就用關(guān)鍵字strictfp??梢詫⒁粋€類、Java接口以及方法聲明為strictfp,但是不允許對接口中的方法以及構(gòu)造函數(shù)聲明strictfp關(guān)鍵字類實例對象的創(chuàng)建過程Java類實例化的先后順序為:(1)如果有static代碼塊,也稱為staticinitializer,則首先運行static代碼塊;若有繼承
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度航空器發(fā)動機維修與檢修合同模板
- 二零二五年度水資源資產(chǎn)托管與水生態(tài)保護合同
- 二零二五年度夫妻解除合同關(guān)于財產(chǎn)分割、子女撫養(yǎng)及共同債務(wù)
- 2025年度電商公司員工合同(含培訓(xùn)與發(fā)展計劃)
- 2025年度礦山股份制合同協(xié)議書:礦山生態(tài)修復(fù)與土地復(fù)墾合作
- 二零二五年度舞蹈賽事組織與贊助合同
- 2025年度鋼結(jié)構(gòu)廠房環(huán)保驗收合同范本
- 2025年度老舊建筑改造裝修公司安全施工合同
- 2025年度電子商務(wù)平臺違約責(zé)任歸責(zé)原則及賠償標準合同
- 二零二五年度各類合同:金融理財產(chǎn)品銷售訂金協(xié)議
- 小學(xué)六年級數(shù)學(xué)上冊《簡便計算》練習(xí)題(310題-附答案)
- 地理標志培訓(xùn)課件
- 培訓(xùn)如何上好一堂課
- 高教版2023年中職教科書《語文》(基礎(chǔ)模塊)下冊教案全冊
- 2024醫(yī)療銷售年度計劃
- 稅務(wù)局個人所得稅綜合所得匯算清繳
- 人教版語文1-6年級古詩詞
- 上學(xué)期高二期末語文試卷(含答案)
- 人教版英語七年級上冊閱讀理解專項訓(xùn)練16篇(含答案)
- 死亡病例討論模板
- 宜城安達特種水泥有限公司雙寨子礦區(qū)鋁土礦礦產(chǎn)資源開發(fā)利用與生態(tài)復(fù)綠方案
評論
0/150
提交評論