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

下載本文檔

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

文檔簡(jiǎn)介

內(nèi)部類匿名類異常類斷言難點(diǎn)異常類主要內(nèi)容6.1內(nèi)部類類的成員:成員變量、成員方法Java支持在一個(gè)類中聲明另一個(gè)類,這樣的類稱作內(nèi)部類,而包含內(nèi)部類的類稱為內(nèi)部類的外嵌類。內(nèi)部類可以訪問外嵌類的成員變量、成員方法。外嵌類的類體中可以用內(nèi)部類聲明對(duì)象,作為外嵌類的成員。內(nèi)部類的類體中不可以聲明類變量和類方法。內(nèi)部類能夠訪問外部?jī)?nèi)的一切成員變量和方法,包括私有的,而實(shí)現(xiàn)接口或繼承類做不到。內(nèi)部類例publicclassChina{privateStringsong="義勇軍進(jìn)行曲";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)點(diǎn):使代碼更加簡(jiǎn)潔、緊湊,模塊化程度更高。匿名內(nèi)部類兩種實(shí)現(xiàn)方式:繼承一個(gè)類,重寫其方法;實(shí)現(xiàn)一個(gè)接口(可以是多個(gè)),實(shí)現(xiàn)其方法。匿名類是一個(gè)子類,用于臨時(shí)創(chuàng)建一個(gè)內(nèi)部類對(duì)象,不必單獨(dú)去定義該子類匿名類體內(nèi)可以對(duì)父類、抽象類以及接口的方法進(jìn)行重寫由于匿名類沒有類名,因此不能重用這個(gè)對(duì)象創(chuàng)建形式:newPeople(){

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

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

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

6.3異常類概念異常是指程序在執(zhí)行過程中出現(xiàn)的意外事件。特點(diǎn)通常會(huì)使程序的正常流程被打斷能否很好的處理運(yùn)行時(shí)刻的異常情況是一個(gè)程序健康的標(biāo)志輸入數(shù)據(jù)不符合要求除數(shù)為0數(shù)組的下標(biāo)越界少了所需加載的類打開不存在的文件網(wǎng)絡(luò)無法連接操作數(shù)超出所要求的范圍自定義異常,要求程序處理…什么時(shí)候會(huì)發(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的異常處理機(jī)制,讀、寫和調(diào)試代碼變得清晰。它把錯(cuò)誤的代碼和正常的代碼分開。Java中的處理方法?錯(cuò)誤:指的是系統(tǒng)異?;蜻\(yùn)行環(huán)境出現(xiàn)的異常,這些異常一般是很嚴(yán)重的異常,即使捕捉到通常也無法處理,例如Java虛擬機(jī)異常指的是一般的異常,例如,輸入/輸出(I/O)異常。對(duì)這些異常應(yīng)用程序可以進(jìn)行處理1、Java中的異常類2、異常處理方法一旦捕獲異常,馬上進(jìn)行處理捕獲異常,但并不處理,或只部分處理重新拋出異常Java中如何進(jìn)行異常處理Java異常處理:try、catch、finally、throw、throws5個(gè)關(guān)鍵字。在方法中手動(dòng)拋出異常聲明方法有可能拋出的各種異常類

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

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

catch

(Type1id1)

{處理異常類型1語(yǔ)句;}

catch

(Typenid2)

{處理異常類型2語(yǔ)句;} ……//其它c(diǎn)atch語(yǔ)句

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

throwsException功能:在調(diào)用方法和可能產(chǎn)生的異常的被調(diào)用方法之間建立起系統(tǒng)處理異常所需的聯(lián)系voidf()throwsTooBig,TooSmall,OldStyle{ //bodyoff()}TestDiv(寫一個(gè)方法,throws異常)返回publicstaticintdiv()throwsException{Stringa=JOptionPane.showInputDialog("請(qǐng)輸入被除數(shù):");Stringb=JOptionPane.showInputDialog("請(qǐng)輸入除數(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語(yǔ)句throw語(yǔ)句拋出的不是異常類,而是一個(gè)異常實(shí)例,而且每次只能拋出一個(gè)異常實(shí)例throws是用來聲明一個(gè)方法可能拋出的所有異常信息throw則是指拋出的一個(gè)具體的異常類型;通常在一個(gè)方法(類)的聲明處通過throws聲明方法(類)可能拋出的異常信息,而在方法(類)內(nèi)部通過throw聲明一個(gè)具體的異常信息;

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

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

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

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

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

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

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

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

如果booleanExperession

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論