28-汪宜飞-实验四.doc_第1页
28-汪宜飞-实验四.doc_第2页
28-汪宜飞-实验四.doc_第3页
28-汪宜飞-实验四.doc_第4页
28-汪宜飞-实验四.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

面向对象程序设计实验报告合肥院学院计算机科学与技术系实验名称 _java继承与多态_日期_2014.10.22姓名/学号 汪宜飞_/_1304091028_ 专业/班级_软件工程_/_1班_指导老师_吴晓晴_成绩_1、 实验目的:(详见指导书,宋体小四)掌握继承、多态的概念与实现方法;掌握包和接口的定义和使用方法;掌握JAVA语言实现多继承的途径;二、实验要求:(详见指导书,宋体小四)1. 能实现类的继承关系;2. 用多种方法创建各个类的对象;3. 程序应包括各个被调用方法的执行结果的显示。4. 写出实验报告。要求记录编译和执行Java程序当中的系统错误信息提示,并给出解决办法。(附运行界面、源代码)。3、 实验内容及过程:(宋体小四,)1分别编写两个类Point2D,Point3D来表示二维空间和三维空间的点,使之满足下列要求:(1)Point2D有两个整型成员变量x, y (分别为二维空间的X,Y方向坐标),Point2D的构造方法要实现对其成员变量x, y的初始化。(2)Point2D有一个void型成员方法offset(int a, int b),它可以实现Point2D的平移。(3)Point3D是Point2D的直接子类,它有有三个整型成员变量x,y,z (分别为三维空间的X,Y,Z方向坐标),Point3D有两个构造方法:Point3D(int x,int y,int z)和Point3D(Point2D p,int z),两者均可实现对Point3D的成员变量x, y,z的初始化。(4)Point3D有一个void型成员方法offset(int a, int b,int c),该方法可以实现Point3D的平移。(5)在Point3D中的主函数main()中实例化两个Point2D的对象p2d1,p2d2,打印出它们之间的距离,再实例化两个Point2D的对象p3d1,p3d2,打印出他们之间的距离。2定义抽象类Shape,抽象方法为showArea(),求出面积并显示,定义矩形类Rectangle,正方形类Square,圆类 Circle,根据各自的属性,用showArea方法求出各自的面积,在main方法中构造3个对象,调用showArea方法。定义接口DiagArea,其中包含方法double getDiagonal()求对角线长, double getArea()求面积,定义一个矩形类,实现此接口,并自行扩充成员变量和方法,定义一个正方形类继承矩形类(如矩形有长w和宽h,正方形有边x,并有相应的构造函数,有一个方法中一次直接显示边长、面积和对角线长),在另一类中的主方法里使用测试该类。1、定义一个描述人的基本类,该类包括人的性别和出生日期两个数据成员,以及设置和获取这些属性值的方法成员;再定义一个大学生类,使大学生类具有人的所有属性外,还具有姓名、学号,大学入学成绩,籍贯属性以及设置和获取这些属性值的方法成员;编写完整的程序,完成一个具有班级学生信息管理功能的程序。在这个程序中,先定义父类people,在其中输入成员变量性别和出生日期,并通过方法set和get来输入、返回成员值,定义方法String来输出成员的信息;在定义子类student继承父类,输入姓名、学号,大学入学成绩,籍贯属性数据成员,并通过方法set和get来输入、返回成员值,定义方法String来输出学生的信息;在主函数中,实例化学生类并赋值,调用String方法输出学生信息。4、 实验中的问题思考及讨论:(列出你实验中出现的问题,及解决的问题和解决的思路)在第一个程序中,在类Point2D中定义了方法public Point2D(int x,int y)输入条件this.x=x;this.y=y;,而在类Point3D中定义public Point3D(Point2D p,int z)没有输入条件this.x =p.x;this.y =p.y;导致最后输出的值为0,通过比较添加了条件程序正确运行了。五、实验总结: (简单、准确的总结本次实验的主要内容,个人收获)只要不断的上机实验,不断的发现自己的错误,才能正真的掌握Java这一门程序语言。加深了解了继承的概念,通过子类通过继承父类的属性并添加自身的属性使子类更加完善,也贴合实际有助于解决现实中的问题。6、 源代码及运行结果 class shiyan public static void main(String args) Point2D p1=new Point2D(2,3);Point2D p2=new Point2D(0,0);p2=p1.offset(p1.x, p1.y);System.out.println(平移后的坐标为:+p2.x+ +p2.y);p2.dis(p1,p2);Point3D p3=new Point3D(2,3,4);Point3D p4=new Point3D(0,0,0);p4=p3.offset(p3.x,p3.y,p3.z);System.out.println(平移后的坐标为:+p4.x+ +p4.y+ +p4.z);p3.dis(p3,p4);class Point2Dint x,y;Point2D()public Point2D(int x,int y)this.x=x;this.y=y;public int getX()return x;public int getY()return y;public Point2D offset(int x,int y)Point2D p2=new Point2D(1,1);p2.x=p2.x+x;p2.y=p2.y+y;return p2;public void dis(Point2D p1,Point2D p2)double x;p1.x=(p1.x-p2.x)*(p1.x-p2.x);p1.y=(p1.y-p2.y)*(p1.y-p2.y);x=Math.sqrt(p1.x+p1.y);System.out.println(坐标p1、p2之间的距离:+x);class Point3D extends Point2Dint z;Point3D(int x,int y,int z) this.x = x;this.y = y;this.z = z;public Point3D(Point2D p,int z)this.x =p.x;this.y =p.y;this.z=z;public int getZ()return z;public Point3D offset(int x,int y,int z)Point3D p4=new Point3D(1,1,1);p4.x=p4.x+x;p4.y=p4.y+y;p4.z=p4.z+z;return p4;public void dis(Point3D p3,Point3D p4)double x;p3.x=(p3.x-p4.x)*(p3.x-p4.x);p3.y=(p3.y-p4.y)*(p3.y-p4.y);p3.z=(p3.z-p4.z)*(p3.z-p4.z);x=Math.sqrt(p3.x+p3.y+p3.z);System.out.println(坐标p3、p4之间的距离:+x); class Shape public static void main(String args) Rectangle a=new Rectangle(3,4);a.showArea();Square b=new Square(3);b.showArea();b.show();Circle c=new Circle();c.showArea();abstract class Shape1abstract void showArea();interface DiagAreadouble getDiagonal();double getArea();class Rectangle implements DiagAreadouble a,b;double c;double d;Rectangle(double a,double b)this.a=a;this.b=b; public double getDiagonal()c=Math.sqrt(a*a)+(b*b);return c; public double getArea()d=a*b;return d; void showArea() System.out.println(矩形长、宽:+a+ +b);System.out.println(矩形对角线:+getDiagonal();System.out.println(矩形面积:+getArea();class Square extends Rectangleint a=3;double c;double d;Square(int a)super(a,a);this.a=a;void showArea()System.out.println(正方形面积:+(a*a);public double getDiagonal()c=Math.sqrt(a*a)+(a*a);return c; public double getArea()d=a*a;return d;void show()System.out.println(正方形边长:+a);System.out.println(正方形对角线:+getDiagonal();System.out.println(正方形面积:+getArea();class Circle int a=3;double PI=3.14;void showArea()System.out.println(圆面积:+(a*a*PI);class persion public static void main(String args) student a=new student();a.setbir(1993/1/10);a.setgrade(69);a.setlocal(合肥);a.setname(wang);a.setsex(男); a.setnumber(1304091028); a.String();class peoplepublic String sex;public String bir;public void setsex(String sex)this.sex=sex;public void setbir(String bir)this.bir=bir;public String getsex()return sex;public String getbir()return bir;void String()System.out.println(性别:+sex+t 出生日期+bir);class student extends peoplepublic String name;public String number;public String grade;public String local;public void setname(String name)=name;public void setnumber(String n

温馨提示

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

评论

0/150

提交评论