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

下載本文檔

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

文檔簡介

實驗六內(nèi)部類和異常類實驗目的1、掌握內(nèi)部類的常用方法2、掌握匿名類的常用方法3、掌握接異常類的常用方法實驗內(nèi)容1、根據(jù)附錄里的源代碼,按照注釋要求,完成代碼填空,使程序能夠運行得出結(jié)果。1)實驗1紅牛農(nóng)場packagefour;publicclassRedCowForm{ StringformName; RedCowcow; //【代碼1】//用內(nèi)部類RedCow聲明對象cow RedCowForm(){ } RedCowForm(Strings){ cow=newRedCow(150,112,5000); //【代碼2】//創(chuàng)建cow formName=s; } publicvoidshowCowMess(){ cow.speak(); } classRedCow{ StringcowName="紅牛"; intheight,weight,price; RedCow(inth,intw,intp){ height=h; weight=w; price=p; } voidspeak(){ System.out.println(cowName+",身高:"+height+"cm,體重:"+weight+"kg"); System.out.println("生活在"+formName); } }}packagefour;publicclassMainClass{ publicstaticvoidmain(String[]args){ RedCowFormform=newRedCowForm("紅牛農(nóng)場"); form.showCowMess(); }}實驗2檢查危險品packagefour;publicclassGoods{ booleanisDanger; Stringname; publicbooleanisDanger(){ returnisDanger; } publicvoidsetDanger(booleanboo){ isDanger=boo; } publicStringgetName(){ returnname; } publicvoidsetName(Strings){ name=s; }}packagefour;publicclassDangerExceptionextendsException{ Stringmessage; publicDangerException(){ message="危險品!"; } publicvoidtoShow(){ System.out.print(message+""); }}packagefour;publicclassMachine{ Goods[]goods; publicvoidcheckBag(Goodsgoods)throwsDangerException{ if(goods.isDanger){ thrownewDangerException(); //【代碼1】//用throw拋出一個DangerException的匿名類 } }}packagefour;publicclassCheck{ publicstaticvoidmain(String[]args){ Machinemachine=newMachine(); Stringname[]={"蘋果","炸藥","西服","硫酸","手表","硫磺"}; Goods[]goods=newGoods[name.length];//檢查6件物品 for(inti=0;i<name.length;i++){ goods[i]=newGoods(); if(i%2==0){ goods[i].setDanger(false); goods[i].setName(name[i]); } else{ goods[i].setDanger(true); goods[i].setName(name[i]); } } for(inti=0;i<goods.length;i++){ try{ machine.checkBag(goods[i]); System.out.println(goods[i].getName()+"檢查通過"); } catch(DangerExceptione){ e.toShow(); //【代碼2】//e調(diào)用toShow()方法 System.out.println(goods[i].getName()+"被禁止!"); } } }}實驗3內(nèi)部類的使用方法packagefour;publicclassOuter{ privatestaticintsize; /**內(nèi)部類Inner的聲明*/ publicclassInner { privateintsize; /**方法doStuff()*/ publicvoiddoStuff(intsize) { size=size+3;//【代碼1】//存取局部變量size加3 this.size=size+2;//【代碼2】//存取其內(nèi)部類的成員變量size加2 Outer.this.size=size+1;//【代碼3】存取其外部類的成員變量size加1 System.out.println(size+""+this.size+""+Outer.this.size); } }//內(nèi)部類Inner結(jié)束 /**類Outer中定義的實例方法testInner()方法*/ publicvoidtestInner() { Inneri=newInner(); i.doStuff(size);//調(diào)用Inner類中的doStuff方法 } /**main()方法*/ publicstaticvoidmain(Stringargs[]) { Outero=newOuter(); o.testInner();//調(diào)用Outer類中的testInner方法 }}//類Outer結(jié)束實驗4匿名類的使用方法packagefour;interfaceSquare{doublegetSquare(intn);}interfaceSqrt{publicdoublegetSqrt(intx);}classA{voidp(Squaresquare){System.out.println(square);//輸出getSquare方法計算后的結(jié)果}voidk(Sqrtsqrt){System.out.println(sqrt);//輸出getSqrt方法計算后的結(jié)果}}publicclassAnonymity{publicstaticvoidmain(Stringargs[]){Aa=newA();a.p(null);//實現(xiàn)Square接口,重寫getSquare方法,返回n的平方Sqrtsqrt=newSqrt(){publicdoublegetSqrt(intx){ returnMath.sqrt(x);} };//重寫getSqrt方法,返回x的開平方根,用靜態(tài)Math.sqrt方法來運算System.out.println("計算開平方:"+sqrt.getSqrt(5));}}實驗5異常類使用方法packagefour;classMyExceptionextendsException{Stringmessage;MyException(Stringstr){message=str;//把參數(shù)的引用傳給message成員變量}publicStringgetMessage(){returnmessage;//返回message成員變量}}abstractclassC{abstractintf(intx,inty)throwsMyException;}classBextendsC{intf(intx,inty)throwsMyException{if(x<100&&y<100)//判斷x、y都不大于100{thrownewMyException("乘數(shù)超過100");//拋出一個新建的MyException對象,MyException對象中構(gòu)造方法傳入的參數(shù)內(nèi)容為:乘數(shù)超過100}returnx*y;}}publicclasseClass{publicstaticvoidmain(Stringargs[]){Ca;a=newB();//設計a對象的B類上轉(zhuǎn)型對象try{System.out.println(a.f(12,10));a.f(150,250);//使用f()方法時傳入一個大于100的乘數(shù)}catch(MyExceptione){System.out.println("x、y都不大于100");//輸出錯誤信息}}}2、設計編寫程序完成以下任務。1)假如要從命令行獲得兩個整數(shù),自定義兩個異常類來描述可能發(fā)生的異常:ParameterNumberException(參數(shù)個數(shù)異常),ParameterFormateException(參數(shù)格式異常),設計一個類,在check(Stringargs[])方法中通告這兩個異常,在main方法中判斷相應的情況下觸發(fā)異常,然后捕獲異常,對它們進行處理。(知識點:異常處理機制)判斷長度和類型不準,相應條件分支拋出對應的自定義異常即可2)編寫一個異常類MyException,在編寫一個類Student,該類有一個產(chǎn)生異常的方法publicvoidspeak(intm)throwsMyException,要求參數(shù)m的值大于1000時,方法拋出一個MyException對象。最后編寫一個主類,在主類的main方法中用Student創(chuàng)建一個對象,讓該對象調(diào)用speak方法。實驗步驟略評分標準A——內(nèi)容功能完善,編程風格好,人機接口界面好;B——內(nèi)容功能完善,編程風格良好,人機接口界面良好;C——完成必做內(nèi)容;D——能完成必做內(nèi)容;E——未按時完成必做內(nèi)容,或者抄襲(雷同者全部為E).參照書上實驗按模版要求,將【代碼】替換為Java程序代碼,編寫好完整的程序文檔,最后運行得到的相關文件,把實驗所得文件一起打包上交。(壓縮包的文件名為:學號后三位和名字開頭字母,如109zhh.RAR|ZIP)

附錄:實驗1紅牛農(nóng)場模板代碼RedCowForm.javapublicclassRedCowForm{ StringformName;RedCowcow; //【代碼1】//用內(nèi)部類RedCow聲明對象cow RedCowForm(){ } RedCowForm(Strings){Cow=newRedCow(150,112,5000); //【代碼2】//創(chuàng)建cow formName=s; } publicvoidshowCowMess(){ cow.speak(); } classRedCow{ StringcowName="紅牛"; intheight,weight,price; RedCow(inth,intw,intp){ height=h; weight=w; price=p; } voidspeak(){ System.out.println(cowName+",身高:"+height+"cm,體重:"+weight+"kg"); System.out.println("生活在"+formName); } }}MainClass.javapublicclassMainClass{ publicstaticvoidmain(String[]args){ RedCowFormform=newRedCowForm("紅牛農(nóng)場"); form.showCowMess(); }}實驗2檢查危險品模板代碼Goods.javapublicclassGoods{ booleanisDanger; Stringname; publicbooleanisDanger(){ returnisDanger; } publicvoidsetDanger(booleanboo){ isDanger=boo; } publicStringgetName(){ returnname; } publicvoidsetName(Strings){ name=s; }}DangerException.javapublicclassDangerExceptionextendsException{ Stringmessage; publicDangerException(){ message="危險品!"; } publicvoidtoShow(){ System.out.print(message+""); }}Machine.javapublicclassMachine{ Goods[]goods; publicvoidcheckBag(Goodsgoods)throwsDangerException{ if(goods.isDanger){thrownewDangerException(goods); //【代碼1】//用throw拋出一個DangerException的匿名類 } }}Check.javapublicclassCheck{ publicstaticvoidmain(String[]args){ Machinemachine=newMachine(); Stringname[]={"蘋果","炸藥","西服","硫酸","手表","硫磺"}; Goods[]goods=newGoods[name.length];//檢查6件物品 for(inti=0;i<name.length;i++){ goods[i]=newGoods(); if(i%2==0){ goods[i].setDanger(false); goods[i].setName(name[i]); } else{ goods[i].setDanger(true); goods[i].setName(name[i]); } } for(inti=0;i<goods.length;i++){ try{ machine.checkBag(goods[i]); System.out.println(goods[i].getName()+"檢查通過"); } catch(DangerExceptione){ //【代碼2】//e調(diào)用toShow()方法 System.out.println(goods[i].getName()+"被禁止!"); } } }}實驗3內(nèi)部類的使用模板代碼Outer.javalpublicclassOuter{ privatestaticintsize; /**內(nèi)部類Inner的聲明*/ publicclassInner { privateintsize; /**方法doStuff()*/ publicvoiddoStuff(intsize) { 【代碼1】//存取局部變量size加3 【代碼2】//存取其內(nèi)部類的成員變量size加2 【代碼3】//存取其外部類的成員變量size加1 System.out.println(size+""+this.size+""+Outer.this.size); } }//內(nèi)部類Inner結(jié)束 /**類Outer中定義的實例方法testInner()方法*/ publicvoidtestInner() { Inneri=newInner(); 【代碼4】//調(diào)用Inner類中的doStuff方法 } /**main()方法*/ publicstaticvoidmain(Stringargs[]) { Outero=newOuter(); 【代碼5】//調(diào)用Outer類中的testInner方法 }}//類Outer結(jié)束實驗4匿名類的使用方法模板代碼Anonymity.javainterfaceSquare{doublegetSquare(intn);}interfaceSqrt{publicdoublegetSqrt(intx);}classA{voidp(Squaresquare){System.out.println(【代碼1】);//輸出getSquare方法計算后的結(jié)果}voidk(Sqrtsqrt){System.out.println(【代碼2】);//輸出getSqrt方法計算后的結(jié)果}}publicclassAnonymity{pu

溫馨提示

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

最新文檔

評論

0/150

提交評論