第08章 內(nèi)部類與異常_第1頁
第08章 內(nèi)部類與異常_第2頁
第08章 內(nèi)部類與異常_第3頁
第08章 內(nèi)部類與異常_第4頁
第08章 內(nèi)部類與異常_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 第8章 內(nèi)部類與異常類8.1 內(nèi)部類在java中有時候會需要只定義了一兩個方法的類或者接口,該類也只被某一個類調(diào)用(實現(xiàn))。此時,我們可以使用內(nèi)部類。內(nèi)部類:在一個類中定義的另一個類外嵌類:包含內(nèi)部類的類稱為內(nèi)部類的外嵌類。外嵌類的成員變量在內(nèi)部類中仍然有效,內(nèi)部類中的方法也可以調(diào)用外嵌類中的方法。8.1 內(nèi)部類內(nèi)部類的類體中不可以聲明類變量和類方法。外嵌類的類體中可以用內(nèi)部類聲明對象,作為外嵌類的成員。內(nèi)部類僅供它的外嵌類使用,其他類不可以用某個類的內(nèi)部類聲明對象例如:某種類型的農(nóng)場飼養(yǎng)了一種牛,但不希望其他農(nóng)場飼養(yǎng),則,可以將這種牛作為該農(nóng)場的內(nèi)部類。(例8-1)8.1 內(nèi)部類內(nèi)部類還可

2、以定義在方法體內(nèi)public class Hapiness interface Smiler public void smile(); public static void main(String args) class Happy implements Smiler public void smile() System.out.println(:-); Happy happy=new Happy(); happy.smile(); 8.2 匿名類有時候,內(nèi)部類聲明只為在類里面用它來創(chuàng)建一個對象(只用一次),因而,對很多情況而言,這個類有沒有名字,或名字叫什么無關(guān)緊要。可有可無的東西,干脆不要

3、!為了簡潔開發(fā),類名使用匿名,程序員關(guān)心的只是它的實例名. 8.2 匿名類Runnable runner=new Runnable() public void run() / Run statememnt / 定義類 Public class Runner implements Runnable public void run() / do sth / 創(chuàng)建實例 Runner runner=new Runner(); 8.2.1與子類有關(guān)的匿名類如果沒有顯示聲明一個類的子類,卻又想用這個子類來創(chuàng)建對象,該怎么辦?Java中可以直接用一個類的類體來創(chuàng)建一個子類對象該類體被認為是一個子類去掉類聲明

4、以后的類體,稱為一個匿名類8.2.1與子類有關(guān)的匿名類匿名類就是一個子類,由于無名可用,所以不可能用匿名類聲明對象,但卻可以直接用匿名類創(chuàng)建一個對象例如:Bank是類,則以下代碼就是用Bank的一個子類(匿名類)創(chuàng)建對象New Bank()匿名類的類體;Class 匿名類 extends Bank定義匿名類對象 a= new 匿名類()8.2.1與子類有關(guān)的匿名類匿名類可以繼承父類的方法也可以重寫父類的方法使用匿名類時,必然是在某個類中直接用匿名類創(chuàng)建對象,因此匿名類一定是內(nèi)部類,匿名類可以訪問外嵌類中的成員變量和方法匿名類的類體中不可以聲明static成員變量和static方法8.2.1與子

5、類有關(guān)的匿名類由于匿名類是一個子類,但沒有類名,所以在用匿名類創(chuàng)建對象時,要直接使用父類的構(gòu)造方法盡管匿名類創(chuàng)建的對象沒有經(jīng)過類聲明步驟,但匿名對象的引用可以傳遞給一個匹配的參數(shù),匿名類的常用的方式是向方法的參數(shù)傳值。8.2.2 和接口有關(guān)的匿名類假設Computable是一個接口,Java允許直接用接口名和一個類體創(chuàng)建一個匿名對象,此類體被認為是實現(xiàn)了Computable接口的類去掉類聲明后的類體,稱作與接口有關(guān)的匿名類。如:new Computable() 實現(xiàn)接口的匿名類的類體;8.2.2 和接口有關(guān)的匿名類如果方法的傳遞參數(shù)是一個接口,此時可以利用匿名類作為參數(shù)傳遞給該方法。例如Voi

6、d f(Computable x)/參數(shù)x的類型為接口在調(diào)用f方法時,可以傳遞一個匿名類給參數(shù)x:f(new Computable ()示例8-3演示了接口有關(guān)的匿名類的用法注意單純的嵌套類一般不建議使用!但它在java核心類中都存在,如接口Map中的Entry,我們應該了解并能解讀這種方法. 匿名類相對而言有用得多,在解耦合和事件回調(diào)注冊中很常見,大家應該對它的運用融會貫通. 用得好都是優(yōu)點,用得不好都是缺點。8.3 異常類所謂異常就是程序運行時可能出現(xiàn)一些錯誤Java的異常出現(xiàn)在方法調(diào)用過程中,即在方法調(diào)用過程中拋出異常對象,終止當前方法的繼續(xù)執(zhí)行,同時導致程序運行出現(xiàn)異常,并等待處理例如

7、,流對象在調(diào)用read方法讀取不存在的文件時,會拋出異常對象:IOException,該對象可以通過調(diào)用以下方法得到或輸出有關(guān)異常信息Public String getMessage();Public void printStackTrace();Public String toString();8.3.1 trycatch語句Java使用trycatch語句來處理異常將可能出現(xiàn)的異常操作放在trycatch語句的try部分將發(fā)生異常后的處理放在catch部分當try部分中的某個方法調(diào)用發(fā)生異常后,try部分將立刻結(jié)束執(zhí)行,而轉(zhuǎn)向執(zhí)行相應的catch部分trycatch語句可以由幾個catch

8、組成,分別處理發(fā)生的相應異常8.3.1 trycatch語句trycatch語句的格式如下:各個catch參數(shù)中的異常類都是Exception的某個子類,表明try部分可能發(fā)生的異常,這些子類之間不能有父子關(guān)系,否則保留一個含有父類參數(shù)的catch即可。try 包含可能發(fā)生異常的語句catch(ExceptionSubClass1 e) catch(ExceptionSubClass2 e) 8.3.2 自定義異常類通過擴展Exception類定義自己的異常類,然后根據(jù)程序的需要來規(guī)定哪些方法產(chǎn)生這樣的異常。一個方法在聲明時可以使用throws關(guān)鍵字聲明要產(chǎn)生的若干個異常,并在該方法的方法體中

9、具體給出產(chǎn)生異常的操作,即用相應的異常類創(chuàng)建對象,并使用throw關(guān)鍵字拋出該異常對象,導致該方法結(jié)束執(zhí)行。程序必須在trycatch塊語句中調(diào)用能發(fā)生異常的方法,其中catch的作用就是捕獲throw方法拋出的異常對象8.4斷言斷言語句在調(diào)試代碼階段非常有用,斷言語句一般用于程序不準備通過捕獲異常來處理的錯誤使用關(guān)鍵字assert聲明一條斷言語句,斷言語句有以下兩種格式:assert booleanExpression;assert booleanExpression:messageException;其中booleanExpression必須是求值為boolean型的表達式;messageException可以是求值為字符串的表達式。8.4斷言assert booleanExpression;booleanExpression=false,程序從斷言語句處停止執(zhí)行booleanExpression=true,程序從斷言語句處繼續(xù)執(zhí)行。assert booleanExpression:mes

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論