Java实验报告课程名称:Java语言面向对象程序设计(第2版)指导教师:卢乃辰院系班级:通信12-1学号:姓名:日期:2015年12月21日星期一2/41目录Java面向对象特性实验..............................................................................................................................................................3实验1对象的创建和使用.................................................................................................................................................3实验2类的静态成员与实例成员.....................................................................................................................................6实验3变量的作用域和this关键字.................................................................................................................................9实验4方法重载...............................................................................................................................................................12实验5子类的派生与方法覆盖.......................................................................................................................................15实验6多态性与动态绑定...............................................................................................................................................21实验8包的使用与访问控制...........................................................................................................................................26实验9接口的实现与运用...............................................................................................................................................29Java异常处理及输入输出流技术............................................................................................................................................33实验3异常处理的链式搜索...........................................................................................................................................33实验4文本浏览器...........................................................................................................................................................36实验6成绩排队...............................................................................................................................................................383/41Java面向对象特性实验实验1对象的创建和使用实验任务:编写一个圆环类Ring的Java程序。圆环类有3个数据成员,分别是内圆半径innerRadius,外半径outerRadius和颜色color,这些属性可以查看get亦可以重新设置set,另外。圆环还可以返回其面积area。实验程序:完成思考题4之后总的源代码如下:Ring.javapackagesy1;publicclassRing{privatedoubleinnerRadius;privatedoubleouterRadius;publicStringcolor;publicRing(doubleiRadius,doubleoRadius,Stringc){innerRadius=iRadius;//代码1初始化外半径outerRadius=oRadius;color=c;}publicdoublegetInnerRadius(){returninnerRadius;//代码2返回内半径}publicdoublegetOuterRadius(){returnouterRadius;}publicvoidsetInnerRadius(doubleiRadius){innerRadius=iRadius;}publicvoidsetOuterRadius(doubleoRadius){outerRadius=oRadius;4/41}publicvoidsetColor(Stringc){color=c;//代码3设置颜色}publicdoublegetArea(){return(outerRadius*outerRadius-innerRadius*innerRadius)*3.1415;}publicdoublegetcircleI()//思考题4添加的方法2,得到内圆的周长{return2*3.1415*innerRadius;}publicdoublegetcircleO()//思考题4添加的方法2,得到外圆的周长{return2*3.1415*outerRadius;}publicstaticvoidmain(String[]args){Ringring=newRing(5,8,red);Ringring1=newRing(5,8,red);Ringring2=newRing(5,8,red);System.out.println(内圆周长:+ring1.getcircleI());System.out.println(外圆周长:+ring2.getcircleO()+\n);System.out.println(圆环的内半径:+ring.getInnerRadius());System.out.println(圆环的外半径:+ring.getOuterRadius());System.out.println(圆环的颜色:+ring.color);System.out.println(圆环的面积:+ring.getArea()+\n);ring.setInnerRadius(4);ring.setOuterRadius(6);//代码4设置圆环ring的外半径为6ring.setColor(blue);System.out.println(圆环的内半径:+ring.getInnerRadius());System.out.println(圆环的外半径:+ring.getOuterRadius());System.out.println(圆环的颜色:+ring.color);System.out.println(圆环的面积:+ring.getArea()+\n);}}实验结果:5/41思考题:(1)将Ring.java中的语句Ringring=newRing(5,8,”red”);改成Ringring=newRing();修改之后编译运行,此时有错误发生吗?分析错误原因。答:会发生错误,错误如下图所示。原因分析:因为Ringring=newRing(5,8,”red”);是有参数的方法,而Ringring=newRing();中Ring()是无参数的方法,两个方法可以同时存在,但属于不同的方法,通过有无形参来区分,但是源程序中没有定义Ring()方法,所以会出现“未定义错误”。(4)现将圆环类Ring中再添加两个方法以便能返回内圆和外圆的周长,然后在主函数main中分别创建两个对象ring1和ring2以显示周长。答:代码如下图示。6/41实验2类的静态成员与实例成员实验任务:编写一个圆类Circle,其中有圆周率,半径和圆对象个数,其中圆周率和对象个数为static成员,此外,Circle中还有两个static方法分别是设置圆周率和显示当前圆对象个数的,其余都是实例成员,仔细体会静态成员与实例成员的使用方法和区别。实验程序:程序源代码:StaticTest.javaclassCircle{staticdoublepi=3.14;staticintobjectNo=0;intradius;Circle(intr){radius=r;objectNo++;}Circle(){radius=2;objectNo++;}doublegetArea(){returnpi*radius*radius;}staticvoidsetPI(doublep){pi=p;}voidsetRadius(intr){radius=r;}staticvoiddisplayNo(){System.out.println(当前的圆对象个数是:+objectNo);}}publicclassStaticTest{publicstaticvoidmain(Stringargs[]){7/41Circlecir1=newCircle(5);System.out.println(cir1的圆周率是:+cir1.pi);System.out.println(cir1的半径是:+cir1.radius);System.out.println(cir1的面积是:+cir1.getArea());cir1.displayNo();cir1.setRadius(10);Circlecir2=newCircle();cir2.setPI(3.1415);System.out.println(cir1的圆周率是:+cir1.pi);System.out.println(cir1的半径是:+cir1.radius);System.out.println(cir2的半径是:+cir2.radius);System.out.println(cir2的面积是:+cir2.getArea());cir2.displayNo();}}实验结果:思考题:(1)请将程序中的语句:8/41System.out.println(c