资源预览内容
第1页 / 共12页
第2页 / 共12页
第3页 / 共12页
第4页 / 共12页
第5页 / 共12页
第6页 / 共12页
第7页 / 共12页
第8页 / 共12页
第9页 / 共12页
第10页 / 共12页
亲,该文档总共12页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
面向对象程序设计实验报告合 肥 院学院计算机科学与技术系实验名称 _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
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号