您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 1421380许倩然实验报告2
上海建桥学院实验报告课程名称:面向对象程序设计实验类型:设计型实验项目名称:包的设计和使用类的封装、继承、多态实验地点:326实验日期:2015年10月30日姓名:许倩然学号:1421380班级:软工B14-2成绩:一、实验目的及要求1.掌握包的创建。2.掌握访问控制符的使用3.掌握继承,以及继承在程序中的具体应用。4.掌握多态的分类,以及多态在程序中的具体应用。二、实验环境及要求jdk1.5以上的开发环境,可使用任何编辑器。三、实验内容及步骤实验一:1.创建一个正方形类Square,正方形的边长的访问权限为private,将其生成在myapp.square包中,设计构造方法。2.创建一个圆类Circle,圆的半径的访问权限为private,将其生成在myapp.circle包中,提供一个改变圆半径的成员方法。3.定义一个类,要求:(1)通过键盘流输入正方形的边长和圆的半径。(2)当输入的边长大于半径时,输出圆周长和正方形面积的差值(若输出的差值为负值,请将其转化为正值);当输入的边长小于半径时,输出圆面积和正方形周长的差值。差值通过DOS控制台输出(若输出的差值为负值,请将其转化为正值)。源代码(排版工整):packagemyapp.square;publicclassSquare{privatedoublelength=0;publicSquare(){}publicSquare(doublel){length=l;}publicdoublegetLength(){returnlength;}publicdoublegetSC(){returnlength*4;}publicdoublegetSA(){returnlength*length;}}packagemyapp.circle;publicclassCircle{privatedoubleradius=0;publicvoidsetRadius(doubler){radius=r;}publicdoublegetRadius(){returnradius;}publicdoublegetCC(){return2*Math.PI*radius;}publicdoublegetCA(){returnMath.PI*radius*radius;}}importmyapp.circle.Circle;importmyapp.square.Square;importjava.util.Scanner;publicclassTest{publicstaticvoidmain(Stringargs[]){System.out.println(输入正方形的边长和圆的半径:);Scannersc=newScanner(System.in);Squares=newSquare(sc.nextDouble());Circlec=newCircle();c.setRadius(sc.nextDouble());sc.close();if(s.getLength()c.getRadius())System.out.println(Math.abs(c.getCC()-s.getSA()));elseSystem.out.println(Math.abs(c.getCA()-s.getSC()));}}结果(截图):边长半径:边长半径:实验二:1.定义一个人类(Person),声明在包app.father,它包含成员变量:privateStringname;privatecharsex;构造方法:通过有参重载的构造方法初始化成员变量;成员方法:publicvoidprint(){//控制台输出此类姓名,性别详细信息}2.定义学生类(Student)继承Person类,声明在包app.son,子类的成员变量包括成员变量:学号(ID)构造方法:带参数的构造方法,初始化所有拥有的成员变量成员方法:publicvoidprint(){//控制台输出此类详细信息}3.定义测试类,生成在包app.test(仅包含main方法)要求:通过运行时多态实现调用Student对象的print方法(Personstu=newStudent(实参);stu.print())。源代码(排版工整):packageapp.father;publicclassPerson{privateStringname;privatecharsex;publicPerson(){}publicPerson(Stringn,chars){name=n;sex=s;}publicvoidprint(){System.out.println(姓名:+name+性别:+sex);}publicStringgetName(){returnname;}publicchargetSex(){returnsex;}}packageapp.son;importapp.father.Person;publicclassStudentextendsPerson{privateStringID;publicStudent(Stringn,charsex,Stringid){super(n,sex);ID=id;}publicvoidprint(){System.out.println(姓名:+getName()+性别:+getSex()+ID:+ID);}}packageapp.test;importapp.father.Person;importapp.son.Student;publicclassTest{publicstaticvoidmain(Stringargs[]){Personstu=newStudent(小桀,'男',74576);stu.print();}}结果(截图):四、分析与讨论(实验过程中发现的重点与难点)实验一中,包的封装必须在程序的第一行;用private修饰成员变量无法直接被其他类使用,需要通过该类里设计的相关方法进行修改或获取数值;使用Scanner需要注意使用完后用变量名.close()关闭或者释放内存,同时也要注意将输入的字符串转换成题目所需要的类型。实验二中,继承时,子类构造方法要构造父类的成员变量时,用super(参数)可以进行有参构造,没有则默认父类无参构造;继承也要注意拥有未继承的成员变量;父类和子类有同名的成员方法时,方法覆盖;字符串和单个字符的引用不同,分别用””和’’。
本文标题:1421380许倩然实验报告2
链接地址:https://www.777doc.com/doc-3060977 .html