收藏 分享(赏)

java程序设计课程--实验报告-实验13.doc

上传人:dzzj200808 文档编号:2703415 上传时间:2018-09-25 格式:DOC 页数:13 大小:91KB
下载 相关 举报
java程序设计课程--实验报告-实验13.doc_第1页
第1页 / 共13页
java程序设计课程--实验报告-实验13.doc_第2页
第2页 / 共13页
java程序设计课程--实验报告-实验13.doc_第3页
第3页 / 共13页
java程序设计课程--实验报告-实验13.doc_第4页
第4页 / 共13页
java程序设计课程--实验报告-实验13.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

1、Java 开发技术实验报告实验序号:实验 13 实验项目名称:继承学 号 姓 名 专业、班实验地点 实 1-316 指导教师 实验时间 2012-12 -5一、 实验目的及要求 理解继承的基本概念 理解继承与可见性 掌握继承的设计二、实验设备(环境)及要求PC 机,windows xp,软件环境(jdk1.6,tomcat web 服务器,Eclipse) 硬件要求:CPU PII 以上,64M 内存,100M 硬盘空间。 软件要求:WindowsXP,IE 5 以上。 开发环境:JDK1.6.0_10三、实验内容与步骤修改类继承中的错误文件 Dog.java 声明了一个 Dog 类,文件 L

2、abrador.java 和 Yorkshire.java 是两个继承自Dog 的类,文件 DogTest.java 是一个简单的驱动程序。将文件保存至本地磁盘并仔细阅读。按照以下步骤对上述程序进行修改:1. 在 DogTest.java 文件中添加语句,要求在创建和打印 Dog 对象之后,还要创建和打印Yorkshire 和 Labrador 对象。注意 Labrador 构造器有两个参数: name 和 color,都是字符串类型。不要修改 DogTest 之外的任何文件,重新编译 DogTest.java,观察碰到的错误。然后修改相应文件来修正该错误。2. 在 DogTest.java

3、中添加代码,打印 Labrador 和 Yorkshire 两个类的平均种群重量。提示:使用 avgBreedWeight()方法。在编译中如果遇到错误,请解决该错误,并给出正确结果。3. 添加一个抽象方法 int avgBreedWeight()至 Dog.java。注意这就意味着需要使用关键字abstract 来描述 avgBreedWeight()方法,并且该方法没有方法体。重新编译所有程序,记录编译中出现的错误,以及解决的方法。DogTest.java 源代码如下:public class DogTest public static void main(String args) Yor

4、kshire yorkshire = new Yorkshire(“xiaohei“);Labrador labrador = new Labrador(“xiaobai“,“white“);System.out.println(yorkshire.getName() + “ says “ + yorkshire.speak();System.out.println(labrador.getName() +“ says “ + labrador.speak();System.out.println(yorkshire.getName() +“ BreedWeight “+yorkshire.a

5、vgBreedWeight()+ “ says “ + yorkshire.speak();System.out.println(labrador.getName() +“ BreedWeight “+labrador.avgBreedWeight()+“ says “ + labrador.speak();Yorkshire.java 源代码如下:public class Yorkshire extends Dog private int breedWeight = 50;public Yorkshire(String name) super(name);public String spea

6、k() return “woof“;public int avgBreedWeight() return breedWeight;Labrador.java 源代码如下:public class Labrador extends Dog private String color; / black, yellow, or chocolate?private int breedWeight = 75;public Labrador(String name, String color) super(name);this.color = color;public String speak() retu

7、rn “WOOF“;public int avgBreedWeight() return breedWeight;Dog.java 源代码如下:public abstract class Dog protected String name;public Dog(String name) this.name = name;public String getName() return name;public String speak() return “Woof“;public abstract int avgBreedWeight();设计类继承1 编写一个抽象类(Shape),长方形、三角形和

8、圆形均为其子类,并各有各的属性。其父类中有计算周长和面积的方法。在测试类中,分别建立如干个对象,计算并输出各对象的周长和面积。Shape.java 源代码如下:public class Shape private double area; private double circumference; /图形类的构造函数 public Shape() area=0; circumference=0; /返回图形的面积 public double getarea() return area; /返回图形的周长 public double getcircumference() return circu

9、mference;Rectangle.java 源代码如下:public class Rectangle extends Shape private double length;private double width; private double area; private double circumference;/长方形类的构造函数 1,对长和宽赋值 public Rectangle( double l, double w) length=l; width=w; area=l*w; circumference=2*(l+w); /长方形类的构造函数 2,对长和宽赋值public Rec

10、tangle( int l, int w) length=(double)l; width=(double)w; area=length*width; circumference=2*(length+width); /长方形类的构造函数 3,对长和宽赋值 public Rectangle(String l,String w) length=Double.parseDouble(l); width=Double.parseDouble(w); area=length*width; circumference=2*(length+width); /返回长方形的长 public double get

11、length() return length; /返回长方形的宽 public double getwidth() return width; /返回长方形的面积 public double getarea() return area; /返回长方形的周长 public double getcircumference() return circumference; /重新定义 equals 方法 public boolean equals(Object otherObject) if(this = otherObject) return true; if(otherObject=null) r

12、eturn false; if(getClass()!=otherObject.getClass() return false; Rectangle other=(Rectangle)otherObject; return length=other.length /重新定义 hashCode 方法public int hashCode() return (new Double(this.width).hashCode()+new Double(this.length).hashCode(); /重新定义 toString 方法 public String toString() return “

13、长 :“+length+“ 宽:“+width+“ 面积:“+area+“ 周长“+circumference; Triangle.java 源代码如下:public class Triangle extends Shapeprivate double circumference;private double area; private double edge1; private double edge2; private double edge3; /三角形类的构造函数,对三角形各边赋值 public Triangle(double E1,double E2,double E3) doubl

14、e p,q; edge1=E1; edge2=E2; edge3=E3; circumference=edge1+edge2+edge3; p=0.5*(edge1+edge2+edge3); q=p*(p-edge1)*(p-edge2)*(p-edge3); area=Math.sqrt(q); /返回边 1 的长? public double getedge1() return edge1; /返回边 2 的长? public double getedge2() return edge2; /返回边 3 的长? public double getedge3() return edge3;

15、 /返回三角形的面积public double getarea() return area; /返回三角形的周长public double getcircumference() return circumference; /重新定义 equals 方法 public boolean equals(Object otherObject) if(this = otherObject) return true; if(getClass()!=otherObject.getClass() return false; if(otherObject=null) return false; Triangle

16、 other=(Triangle)otherObject; return edge1=other.edge1 /重新定义 hashCode 方法 public int hashCode() return (new Double(this.edge1).hashCode()+new Double(this.edge2).hashCode()+new Double(this.edge3).hashCode(); /重新定义 toString 方法public String toString() return “边 1:“+edge1+“ 边 2:“+edge2+“ 边 3:“+edge3+“ 面积

17、:“+area+“ 周长“+circumference;Circle.java 源代码如下:public class Circle extends Shapedouble radius; double pi=3.14; private double area; private double circumference; /圆形类的构造函数public Circle(double r) radius=r; area=pi*r*r; circumference=2*pi*r; /返回圆的半径 public double getradius() return radius; /返回圆的面积 publ

18、ic double getarea() return area; /返回圆的周长 public double getcircumference() return circumference; public boolean equals(Object otherObject) if(this = otherObject) return true; if(getClass()!=otherObject.getClass() return false; if(otherObject=null) return false; Circle other=(Circle)otherObject; retur

19、n radius=other.radius public int hashCode() return (new Double(this.radius).hashCode(); public String toString() return “半径 :“+radius+“ 面积:“+area+“ 周长“+circumference; Test.java 源代码如下:/* Test 类的数组实现*/public class Test public static void main(String args) double sumArea; double sumCircumference; Shape

20、 s=new Shape3;s0=new Rectangle(3,4);/定义一个长方形 r1,长为 3,宽为 4 s1=new Circle(2); s2=new Triangle(2,6,5); for(Shape element :s) System.out.println(element);sumArea=s0.getarea()+s1.getarea()+s2.getarea(); sumCircumference=s0.getcircumference()+s1.getcircumference()+s2.getcircumference(); System.out.println

21、(“总面积:“+sumArea+“, 总周长:“+sumCircumference); 2.(1)设计一个表示二维平面上点的类 Point,包含有表示坐标位置的 protected 类型的成员变量 x 和 y,获取和设置 x 和 y 值的 public 方法。Point.java 源代码如下:public class Point float x,y;public Point(float a,float b)x=a;y=b;public void setPoint(float x,float y)this.x=x;this.y=y;public float getX()return x;publ

22、ic float getY()return y; public static void main(String args) Point p1=new Point(12,20); System.out.println(“x 的坐标为:“+p1.getX(); System.out.println(“y 的坐标为:“+p1.getY();(2)设计一个表示二维平面上圆的类 Circle,它继承自类 Point,还包含有表示圆半径的 protected 类型的成员变量 r、获取和设置 r 值的 public 方法、计算圆面积的 public 方法。NCircle.java 源代码如下:public

23、class NCircle extends Point protected float radius;/ final float PI=3.14;public NCircle(float a,float b,float r)super(a,b);radius=r;public void setCircle(float r)radius=r;float getRadius()return radius;double area()return 3.14*radius*radius;public static void main(String args) NCircle c1=new NCircle

24、(3, 4, 5);System.out.println(“半径为:“+c1.getRadius()+“ 面积为: “+c1.area(); (3)设计一个表示圆柱体的类 Cylinder,它继承自类 Circle,还包含有表示圆柱体高的 protected 类型的成员变量 h、获取和设置 h 值的 public 方法、计算圆柱体体积的 public方法。(4)建立若干个 Cylinder 对象,输出其轴心位置坐标、半径、高及其体积的值。Cylinder.java 源代码如下:public class Cylinder extends NCircle float heigh;public Cy

25、linder(float a,float b,float r,float h)super(a,b,r);heigh=h;void setHeigh(float h)heigh=h;float getHeigh()return heigh;double volume()return super.area()*heigh;public static void main(String args) Cylinder c=new Cylinder(3, 4, 5, 6);Cylinder c1=new Cylinder(4, 5, 6, 7);Cylinder c2=new Cylinder(5, 6,

26、 7, 8);System.out.println(“面积为:“+c.volume();System.out.println(“轴心坐标为:“+c1.getX()+“,“+c1.getY()+“ 半径为:“+c1.getRadius()+“ 高为:“+c1.getHeigh()+“体积为:“+c1.volume();System.out.println(“轴心坐标为:“+c2.getX()+“,“+c2.getY()+“ 半径为:“+c2.getRadius()+“ 高为:“+c2.getHeigh()+“体积为:“+c2.volume();实验要求: 每个类包含无参数和有参数的构造方法。构造

27、方法用于对成员变量初始化,无参数的构造方法将成员变量初始化为 0 值。子类的构造方法调用父类的构造方法,对父类中的成员变量初始化。方法名自定;四、实验结果与数据处理1 修改类继承中的错误如下图:1.输出各对象的周长和面积的结果如下:1.获取和设置 x 和 y 值的 public 方法的结果如下:2.计算圆面积的结果如下:3.计算圆柱体体积的结果如下:4.输出其轴心位置坐标、半径、高及其体积的值的结果如下:五、分析与讨论五、分析与讨论通过本次实验,学会了使用 super 引用调用父类的构造方法。知道了抽象类代表的是一种概念,子类将基于这种概念来定义方法,因此抽象类不能实例化,并且进一步的理解了如何设计类间的层次结构。六、教师评语签名:日期:成绩

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报