java程序设计课程--实验报告-实验13.doc_第1页
java程序设计课程--实验报告-实验13.doc_第2页
java程序设计课程--实验报告-实验13.doc_第3页
java程序设计课程--实验报告-实验13.doc_第4页
java程序设计课程--实验报告-实验13.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

Java开发技术实验报告实验序号:实验13 实验项目名称:继承学号姓名专业、班实验地点实1-316指导教师实验时间2012-12 -5一、 实验目的及要求l 理解继承的基本概念l 理解继承与可见性l 掌握继承的设计二、实验设备(环境)及要求PC机,windows xp,软件环境(jdk1.6,tomcat web服务器,Eclipse)l 硬件要求:CPU PII 以上,64M 内存,100M 硬盘空间。l 软件要求:WindowsXP,IE 5 以上。l 开发环境:JDK1.6.0_10三、实验内容与步骤修改类继承中的错误文件Dog.java声明了一个Dog类,文件Labrador.java和Yorkshire.java是两个继承自Dog的类,文件DogTest.java是一个简单的驱动程序。将文件保存至本地磁盘并仔细阅读。按照以下步骤对上述程序进行修改:1. 在DogTest.java文件中添加语句,要求在创建和打印Dog对象之后,还要创建和打印Yorkshire和Labrador对象。注意Labrador构造器有两个参数:name和color,都是字符串类型。不要修改DogTest之外的任何文件,重新编译DogTest.java,观察碰到的错误。然后修改相应文件来修正该错误。2. 在DogTest.java中添加代码,打印Labrador和Yorkshire两个类的平均种群重量。提示:使用avgBreedWeight()方法。在编译中如果遇到错误,请解决该错误,并给出正确结果。3. 添加一个抽象方法int avgBreedWeight()至Dog.java。注意这就意味着需要使用关键字abstract来描述avgBreedWeight()方法,并且该方法没有方法体。重新编译所有程序,记录编译中出现的错误,以及解决的方法。DogTest.java源代码如下:public class DogTest public static void main(String args) Yorkshire 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.avgBreedWeight()+ 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 speak() 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() return WOOF;public int avgBreedWeight() return breedWeight;Dog.java源代码如下:public abstract class Dog protected String name;public Dog(String name) = name;public String getName() return name;public String speak() return Woof;public abstract int avgBreedWeight();设计类继承1 编写一个抽象类(Shape),长方形、三角形和圆形均为其子类,并各有各的属性。其父类中有计算周长和面积的方法。在测试类中,分别建立如干个对象,计算并输出各对象的周长和面积。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 circumference;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 Rectangle( 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 getlength() 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) return false; if(getClass()!=otherObject.getClass() return false; Rectangle other=(Rectangle)otherObject; return length=other.length&width=other.width &area=other.area&circumference=other.circumference; /重新定义hashCode方法public int hashCode() return (new Double(this.width).hashCode()+new Double(this.length).hashCode(); /重新定义toString方法 public String toString() return 长:+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) double 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; /返回三角形的面积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 other=(Triangle)otherObject; return edge1=other.edge1 &edge2=other.edge2 &edge3=other.edge3 &area=other.area &circumference=other.circumference; /重新定义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+ 面积:+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; /返回圆的面积 public 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; return radius=other.radius &pi=other.pi &area=other.area &circumference=other.circumference; 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 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(总面积:+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; public 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 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(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 Cylinder(float a,float b,float r,float h) super(a,b,r); heigh=h; void setHeigh(float h) he

温馨提示

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

评论

0/150

提交评论