实验六-内部类与异常类_第1页
实验六-内部类与异常类_第2页
实验六-内部类与异常类_第3页
实验六-内部类与异常类_第4页
实验六-内部类与异常类_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验六内部类和异常类实验目的1、掌握内部类的常用方法2、掌握匿名类的常用方法3、掌握接异常类的常用方法实验内容1、根据附录里的源代码,按照注释要求,完成代码填空,使程序能够运行得出结果。1)实验1红牛农场packagefour;publicclassRedCowForm{ StringformName; RedCowcow; //【代码1】//用内部类RedCow声明对象cow RedCowForm(){ } RedCowForm(Strings){ cow=newRedCow(150,112,5000); //【代码2】//创建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("红牛农场"); 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调用toShow()方法 System.out.println(goods[i].getName()+"被禁止!"); } } }}实验3内部类的使用方法packagefour;publicclassOuter{ privatestaticintsize; /**内部类Inner的声明*/ publicclassInner { privateintsize; /**方法doStuff()*/ publicvoiddoStuff(intsize) { size=size+3;//【代码1】//存取局部变量size加3 this.size=size+2;//【代码2】//存取其内部类的成员变量size加2 Outer.this.size=size+1;//【代码3】存取其外部类的成员变量size加1 System.out.println(size+""+this.size+""+Outer.this.size); } }//内部类Inner结束 /**类Outer中定义的实例方法testInner()方法*/ publicvoidtestInner() { Inneri=newInner(); i.doStuff(size);//调用Inner类中的doStuff方法 } /**main()方法*/ publicstaticvoidmain(Stringargs[]) { Outero=newOuter(); o.testInner();//调用Outer类中的testInner方法 }}//类Outer结束实验4匿名类的使用方法packagefour;interfaceSquare{doublegetSquare(intn);}interfaceSqrt{publicdoublegetSqrt(intx);}classA{voidp(Squaresquare){System.out.println(square);//输出getSquare方法计算后的结果}voidk(Sqrtsqrt){System.out.println(sqrt);//输出getSqrt方法计算后的结果}}publicclassAnonymity{publicstaticvoidmain(Stringargs[]){Aa=newA();a.p(null);//实现Square接口,重写getSquare方法,返回n的平方Sqrtsqrt=newSqrt(){publicdoublegetSqrt(intx){ returnMath.sqrt(x);} };//重写getSqrt方法,返回x的开平方根,用静态Math.sqrt方法来运算System.out.println("计算开平方:"+sqrt.getSqrt(5));}}实验5异常类使用方法packagefour;classMyExceptionextendsException{Stringmessage;MyException(Stringstr){message=str;//把参数的引用传给message成员变量}publicStringgetMessage(){returnmessage;//返回message成员变量}}abstractclassC{abstractintf(intx,inty)throwsMyException;}classBextendsC{intf(intx,inty)throwsMyException{if(x<100&&y<100)//判断x、y都不大于100{thrownewMyException("乘数超过100");//抛出一个新建的MyException对象,MyException对象中构造方法传入的参数内容为:乘数超过100}returnx*y;}}publicclasseClass{publicstaticvoidmain(Stringargs[]){Ca;a=newB();//设计a对象的B类上转型对象try{System.out.println(a.f(12,10));a.f(150,250);//使用f()方法时传入一个大于100的乘数}catch(MyExceptione){System.out.println("x、y都不大于100");//输出错误信息}}}2、设计编写程序完成以下任务。1)假如要从命令行获得两个整数,自定义两个异常类来描述可能发生的异常:ParameterNumberException(参数个数异常),ParameterFormateException(参数格式异常),设计一个类,在check(Stringargs[])方法中通告这两个异常,在main方法中判断相应的情况下触发异常,然后捕获异常,对它们进行处理。(知识点:异常处理机制)判断长度和类型不准,相应条件分支抛出对应的自定义异常即可2)编写一个异常类MyException,在编写一个类Student,该类有一个产生异常的方法publicvoidspeak(intm)throwsMyException,要求参数m的值大于1000时,方法抛出一个MyException对象。最后编写一个主类,在主类的main方法中用Student创建一个对象,让该对象调用speak方法。实验步骤略评分标准A——内容功能完善,编程风格好,人机接口界面好;B——内容功能完善,编程风格良好,人机接口界面良好;C——完成必做内容;D——能完成必做内容;E——未按时完成必做内容,或者抄袭(雷同者全部为E).参照书上实验按模版要求,将【代码】替换为Java程序代码,编写好完整的程序文档,最后运行得到的相关文件,把实验所得文件一起打包上交。(压缩包的文件名为:学号后三位和名字开头字母,如109zhh.RAR|ZIP)

附录:实验1红牛农场模板代码RedCowForm.javapublicclassRedCowForm{ StringformName;RedCowcow; //【代码1】//用内部类RedCow声明对象cow RedCowForm(){ } RedCowForm(Strings){Cow=newRedCow(150,112,5000); //【代码2】//创建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("红牛农场"); 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调用toShow()方法 System.out.println(goods[i].getName()+"被禁止!"); } } }}实验3内部类的使用模板代码Outer.javalpublicclassOuter{ privatestaticintsize; /**内部类Inner的声明*/ publicclassInner { privateintsize; /**方法doStuff()*/ publicvoiddoStuff(intsize) { 【代码1】//存取局部变量size加3 【代码2】//存取其内部类的成员变量size加2 【代码3】//存取其外部类的成员变量size加1 System.out.println(size+""+this.size+""+Outer.this.size); } }//内部类Inner结束 /**类Outer中定义的实例方法testInner()方法*/ publicvoidtestInner() { Inneri=newInner(); 【代码4】//调用Inner类中的doStuff方法 } /**main()方法*/ publicstaticvoidmain(Stringargs[]) { Outero=newOuter(); 【代码5】//调用Outer类中的testInner方法 }}//类Outer结束实验4匿名类的使用方法模板代码Anonymity.javainterfaceSquare{doublegetSquare(intn);}interfaceSqrt{publicdoublegetSqrt(intx);}classA{voidp(Squaresquare){System.out.println(【代码1】);//输出getSquare方法计算后的结果}voidk(Sqrtsqrt){System.out.println(【代码2】);//输出getSqrt方法计算后的结果}}publicclassAnonymity{pu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论