山西大学计算机与信息技术学院实验报告姓名弓彩霞学号2013242032专业班级2013级软件工程四班课程名称Java实验实验日期2015/6/18成绩指导教师王红菊批改日期实验名称实验3继承、接口、包的使用与访问控制一、实验目的1、掌握java继承中父类及其子类的定义方法。2、掌握子类重写父类同名方法的方法。Super3、掌握接口的用法。4、理解Java包的组织结构;5、学会编写带有包结构的程序;6、掌握包结构下的成员访问控制。二、实验内容编程题.(一)定义一个数组,它可以存储一个矩形、一个圆,一个双精度数或一个整数程序代码:packagejava第三次实验;publicclassObject{publicstaticvoidmain(String[]args){Objectshape[]=newObject[10];shape[0]=newRectangle(2,3);shape[1]=newCircle2(2);//创建一个Circle类型。shape[2]=newInteger(3);shape[3]=newDouble(1.0);for(inti=0;i4;i++){if((shape[i])instanceofCircle2)((Circle2)shape[i]).show();elseif((shape[i])instanceofRectangle)((Rectangle)shape[i]).show();//这里恢复原来的对象类型,用强制类型转换。elseif((shape[i])instanceofInteger)System.out.println(整数为:+shape[i]);elseif((shape[i])instanceofDouble)System.out.println(浮点数为:+shape[i]);}}}//定义长方形classRectangle{protecteddoublelength,width;Rectangle(doublel,doublew){this.length=l;this.width=w;}voidshow(){System.out.print(长方形的长为:+length);System.out.println(长方形的宽为:+width);}}//定义圆classCircle2{protecteddoubler;Circle2(doubler){this.r=r;}voidshow(){System.out.println(圆形的半径为:+r);}}运行结果贴图:(二)设计一个名为Triangle的类来扩展GeometricObject类,该类包括:三个名为side1、side2和side3的double数据域表示这个三角形的三条边,它们的默认值是1.0。一个无参构造方法创建默认的三角形。一个能创建带制定side1、side2和side3的三角形的构造方法。所有三个数据域的访问器方法。一个名为getArea()的方法返回这个三角形的面积。一个名为getPerimeter()方法返回三角形的周长。一个名为toString()的方法返回这个三角形的字符串描述,包括三条边的长、面积和周长。画出这些类的UML图。实现这些类,编写一个测试程序,创建边长为1、1.5和1.颜色为yellow,filled为true的Triangle对象,然后显示它的面积、周长、颜色以及是否被填充。程序代码:packageJava第三次实验;publicclassGeometricObject{privateStringcolor=white;privatebooleanfilled;privatejava.util.DatedateCreated;publicGeometricObject(){dateCreated=newjava.util.Date();}publicGeometricObject(Stringcolor,booleanfilled){dateCreated=newjava.util.Date();this.color=color;this.filled=filled;}publicStringgetColor(){returncolor;}publicvoidsetColor(Stringcolor){this.color=color;}publicbooleanisFilled(){returnfilled;}publicvoidsetFilled(booleanfilled){this.filled=filled;}publicjava.util.DategetDateCreated(){returndateCreated;}publicvoidsetDateCreated(java.util.DatedateCreated){this.dateCreated=dateCreated;}@OverridepublicStringtoString(){returncolor=+color+\nfilled=+filled+\ncreatedon+dateCreated;}}packageJava第三次实验;publicclassTriangleextendsGeometricObject{privatedoubleside1;privatedoubleside2;privatedoubleside3;Triangle(){this.side1=1.0;this.side2=1.0;this.side3=1.0;}Triangle(doubleside1,doubleside2,doubleside3){this.side1=side1;this.side2=side2;this.side3=side3;}publicdoublegetSide1(){returnside1;}publicdoublegetSide2(){returnside2;}publicdoublegetSide3(){returnside3;}publicdoublegetArea(){doublep=0.5*(side1+side2+side3);returnMath.sqrt(p*(p-side1)*(p-side2)*(p-side3));}publicdoublegetPerimeter(){returnside1+side2+side3;}/*publicStringtoString(){returnTriangle[side1=+side1+,side2=+side2+,side3=+side3+,getSide1()=+getSide1()+,getSide2()=+getSide2()+,getSide3()=+getSide3()+,getArea()=+getArea()+,getPerimeter()=+getPerimeter()+];}*/@OverridepublicStringtoString(){returnside1=+side1+,\nside2=+side2+,\nside3=+side3+,\ngetArea()=+getArea()+,\ngetPerimeter()=+getPerimeter()+,\ngetColor()=+getColor()+,\nisFilled()=+isFilled()+,\ngetDateCreated()=+getDateCreated();}publicstaticvoidmain(String[]args){Trianglet1=newTriangle(1,1.5,1.);t1.setColor(yellow);t1.setFilled(true);System.out.println(t1.toString());}}运行结果贴图:(三)设计一个名为person的类和它的两个名为Student和Employee子类。Employee类又有子类:教员类Fculty和职员类Staff。每个人都有姓名、地址、电话号码和电子邮箱地址。学生有班级状态(大一、大二、大三、大四)。将这些状态定义为常量。一个雇员有办公室、工资和受聘日期。定义一个名为MyDate的类,包含数据域:year、month和day。教员有办公时间和级别。职员有职务称号。覆盖每个类中的toString方法,显示相应的类名和人名。画出这些类的UML图。实现这些类。编写一个测试程序,创建Person、Student、Employee、Faculty和Staff,并且调用它们的toString方法。程序代码:packageJava第三次实验;publicclassPerson{privateStringname;privateStringaddress;privateStringtelephoneNumber;privateStringe_mail;publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}@OverridepublicStringtoString(){//TODOAuto-generatedmethodstubSystem.out.println(Person+getName());returnsuper.toString();}publicstaticvoidmain(String[]args){Personperson=newPerson();person.setName(Gong);person.toString();Studentstudent=newStudent();student.setName(Wang);student.toString();Employeeemployee=newEmployee();employee.setName(Zhang);employee.toString();Fcultyfculty=newFculty();fculty.setName(Han);fculty.toString();Staffstaff=newStaff();staff.setName(Li);staff.toString();}}classStudentextendsPerson{privatefinalStringSTR1=大一;privatefinalStringSTR2=大二;privatefinalStringSTR3=大三;privatefinalStringSTR4=大四;@OverridepublicStringgetName(){//TODOAuto-generatedmethodstubreturnsuper.getName();}@OverridepublicvoidsetName(Stringname){//TODOAuto-generatedmethodstubsuper.setName(name);}@OverridepublicStringtoString(){//TODOAuto-generatedmethodstubSystem.out.println(Student+getName());returnsuper.toString();}}classEmployeeextendsPerson{privateintofficeNumber;//办公室号privatedoublebalance;//雇员工资privatejava.util.Datedate;//受聘日期@OverridepublicStringgetName(){//TODOAuto-generatedmethodstubreturnsuper.getName();}@OverridepublicvoidsetName(Stringname){//TODOAuto-generatedmethodstubsu