Java面向?qū)ο蟪绦蛟O(shè)計第6章 內(nèi)部類與異常類 -Meili_第1頁
Java面向?qū)ο蟪绦蛟O(shè)計第6章 內(nèi)部類與異常類 -Meili_第2頁
Java面向?qū)ο蟪绦蛟O(shè)計第6章 內(nèi)部類與異常類 -Meili_第3頁
Java面向?qū)ο蟪绦蛟O(shè)計第6章 內(nèi)部類與異常類 -Meili_第4頁
Java面向?qū)ο蟪绦蛟O(shè)計第6章 內(nèi)部類與異常類 -Meili_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

內(nèi)部類匿名類異常類斷言難點異常類主要內(nèi)容6.1內(nèi)部類類的成員:成員變量、成員方法Java支持在一個類中聲明另一個類,這樣的類稱作內(nèi)部類,而包含內(nèi)部類的類稱為內(nèi)部類的外嵌類。內(nèi)部類可以訪問外嵌類的成員變量、成員方法。外嵌類的類體中可以用內(nèi)部類聲明對象,作為外嵌類的成員。內(nèi)部類的類體中不可以聲明類變量和類方法。內(nèi)部類能夠訪問外部內(nèi)的一切成員變量和方法,包括私有的,而實現(xiàn)接口或繼承類做不到。內(nèi)部類例publicclassChina{privateStringsong="義勇軍進行曲";publicvoidtest(){}

classBeijing{Stringname="北京";voidspeak(){System.out.println("Ourcapitalis:"+name+",Ournationalsongis:"+song);}}publicstaticvoidmain(String[]args){Chinac=newChina();c.newBeijing().speak();}}

6.2匿名類匿名內(nèi)部類:子類去掉類聲明的類體優(yōu)點:使代碼更加簡潔、緊湊,模塊化程度更高。匿名內(nèi)部類兩種實現(xiàn)方式:繼承一個類,重寫其方法;實現(xiàn)一個接口(可以是多個),實現(xiàn)其方法。匿名類是一個子類,用于臨時創(chuàng)建一個內(nèi)部類對象,不必單獨去定義該子類匿名類體內(nèi)可以對父類、抽象類以及接口的方法進行重寫由于匿名類沒有類名,因此不能重用這個對象創(chuàng)建形式:newPeople(){

匿名類類體};匿名類在創(chuàng)建對象時,要直接使用父類的構(gòu)造方法完成三件事:1、創(chuàng)建一個Speak的子類,該子類為匿名類2、改寫Speak中的方法speakHello()3、返回該子類的引用,賦給Speakspeak和類有關(guān)的匿名類和接口有關(guān)的匿名類

Java允許直接用接口名和一個類體創(chuàng)建一個匿名對象,此類體被認(rèn)為是實現(xiàn)了Computable接口的類去掉類聲明后的類體,稱作匿名類。下列代碼就是用實現(xiàn)了Computable接口的類(匿名類)創(chuàng)建對象:

newComputable(){實現(xiàn)接口的匿名類的類體}

6.3異常類概念異常是指程序在執(zhí)行過程中出現(xiàn)的意外事件。特點通常會使程序的正常流程被打斷能否很好的處理運行時刻的異常情況是一個程序健康的標(biāo)志輸入數(shù)據(jù)不符合要求除數(shù)為0數(shù)組的下標(biāo)越界少了所需加載的類打開不存在的文件網(wǎng)絡(luò)無法連接操作數(shù)超出所要求的范圍自定義異常,要求程序處理…什么時候會發(fā)生異常?readfile{

try{ openthefile;//打開文件

dertermineitssize;//判斷大小

allocatethatmuchmemory;//分配內(nèi)存

readthefileintomemory;//將文件讀入內(nèi)存

closethefile;//關(guān)閉文件 }

catch(fileopenfailed){do

sth. }

catch(sizederterminedfailed){do

sth.}

catch(memoryallocatedfailed){do

sth.}

catch(readfailed){do

sth. }

catch(fileclosefailed){do

sth.}}正常業(yè)務(wù)邏輯異常捕捉使用Java的異常處理機制,讀、寫和調(diào)試代碼變得清晰。它把錯誤的代碼和正常的代碼分開。Java中的處理方法?錯誤:指的是系統(tǒng)異常或運行環(huán)境出現(xiàn)的異常,這些異常一般是很嚴(yán)重的異常,即使捕捉到通常也無法處理,例如Java虛擬機異常指的是一般的異常,例如,輸入/輸出(I/O)異常。對這些異常應(yīng)用程序可以進行處理1、Java中的異常類2、異常處理方法一旦捕獲異常,馬上進行處理捕獲異常,但并不處理,或只部分處理重新拋出異常Java中如何進行異常處理Java異常處理:try、catch、finally、throw、throws5個關(guān)鍵字。在方法中手動拋出異常聲明方法有可能拋出的各種異常類

tryfinallycatchthrowsthrow有可能會出現(xiàn)異常的代碼一定要放到try代碼塊中不管有沒有異常都要執(zhí)行的代碼捕獲和處理異常2、異常處理方法(1)try

{//業(yè)務(wù)實現(xiàn)代碼}

catch

(Type1id1)

{處理異常類型1語句;}

catch

(Typenid2)

{處理異常類型2語句;} ……//其它catch語句

[finally { 無論是否拋出異常都要執(zhí)行的語句;}]{}必不可少,即使只有一句代碼有try,則catch、finally必須出現(xiàn)其一。Catch塊可以有多個,從上往下依次判斷,只要捕捉到一個異常,下面的catch塊不會執(zhí)行三、異常的拋出和處理throws語句指明方法中可能要產(chǎn)生的異常類型,由調(diào)用者進行異常處理。在拋出的方法定義后加上

throwsException功能:在調(diào)用方法和可能產(chǎn)生的異常的被調(diào)用方法之間建立起系統(tǒng)處理異常所需的聯(lián)系voidf()throwsTooBig,TooSmall,OldStyle{ //bodyoff()}TestDiv(寫一個方法,throws異常)返回publicstaticintdiv()throwsException{Stringa=JOptionPane.showInputDialog("請輸入被除數(shù):");Stringb=JOptionPane.showInputDialog("請輸入除數(shù):");System.out.print(a+"/"+b+"=");inta1=Integer.parseInt(a);intb1=Integer.parseInt(b);intc=a1/b1;System.out.println(c);returnc;}三、異常的拋出和處理如果需要在程序中自行拋出異常,應(yīng)使用throw語句throw語句拋出的不是異常類,而是一個異常實例,而且每次只能拋出一個異常實例throws是用來聲明一個方法可能拋出的所有異常信息throw則是指拋出的一個具體的異常類型;通常在一個方法(類)的聲明處通過throws聲明方法(類)可能拋出的異常信息,而在方法(類)內(nèi)部通過throw聲明一個具體的異常信息;

throws通常不用顯示的捕獲異常,可由系統(tǒng)自動將所有捕獲的異常信息拋給上級方法;

throw則需要用戶自己捕獲相關(guān)的異常,而后在對其進行相關(guān)包裝,最后在將包裝后的異常信息拋出。

Throws與Throw區(qū)別自定義異常類通過繼承Exception類或它的子類,實現(xiàn)自定義異常類。Exception類有兩個構(gòu)造函數(shù)publicException();publicException(Strings);其中s表示對異常的描述說明Exception類的常用方法:publicvoidprintStackTrace();返回調(diào)用棧信息publicStringtoString();返回異常對象的字符串表示publicStringgetMessage();返回異常對象中攜帶的出錯信息對于自定義異常,必須采用throw語句拋出異常,這種類型的異常不會自行產(chǎn)生。總體上分為兩步:第1步:定義異常類第2步:定義異常對象,并拋出該對象。自定義異常類第1步:定義異常類classuserExceptionextendsException{ intn=0;//計數(shù)器

userException(){n++; } userException(Strings){ super(s); n++; }

Stringshow(){ return"自定義異常對象:"+n; }}自定義異常類第2步:定義異常對象,并拋出該對象。publicclasstestException{ staticvoidTest()throwsUserException{

userExceptione; e=newuserException("自定義異常"); throwe; } publicstaticvoidmain(Stringargs[]){ try{Test();

}catch(userExceptione){ System.out.println(e.show()); } }}自定義異常類6.4斷言Java1.4以后引入斷言機制主要用于監(jiān)視代碼的執(zhí)行狀態(tài)兩種格式:assertbooleanExperession;

如果booleanExperession為真,繼續(xù)執(zhí)行,否則在此處停止執(zhí)行assertbooleanExperession:messageExpression

如果booleanExperession

溫馨提示

  • 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論