Java实验7抽象类和接口_第1页
Java实验7抽象类和接口_第2页
Java实验7抽象类和接口_第3页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、实验 6抽象类和接口一、实验目的:1、学习掌握抽象类的概念和使用方法。2、学习掌握接口的概念和定义接口的方法。3、学习使用 Cloneable 接口和 clone 方法进行对象内容的复制。4、理解浅复制和深复制的概念,掌握覆盖 clone 方法进行对象内 容深复制的技术。二、实验任务:1、学习掌握抽象类的概念和使用方法。程序要求:(1)首 先 创 建 一 个 类 家 族 , 其 中 抽 象 类 几 何 图 形 类 GeometricObject 为 父 类 , 圆 类 Circle 和 矩 形 类 Rectangle 为子类。几何图形类 GeometricObject 中定义 保护型字符串变量

2、 color ,表示图形的颜色; 该类要具备 构造方法和两个抽象方法 findArea 和 findPerimeter , 抽 象 方 法 findArea 求 图 形 面 积 , 抽 象 方 法 findPerimeter 求图形周长。(2)Circle 类和 Rectangle 类是 GeometricObject 类的子类, 其中应实现父类的抽象方法。(3)程序主方法中创建两个几何对象,一个圆和一个矩形, 并用 GeometricObject 类的引用变量引用它们,调用抽 象方法。2、学习接口的概念和利用接口实现多态的方法。程序要求如下:(1)首先创建圆类 Circle 和圆柱体类 Cy

3、linder ,其中 Circle 类是父类, Cylinder 类是子类;(2)创 建 接 口 Comparable , 其 中 包 含 一 个 抽 象 方 法 compareTo,用来比较对象的大小。抽象方法 compareTo 的形式如下:public int compareTo(Object o);(3)创建类 ComparableCircle ,该类为 Circle 类的子类, 并 实现 Comparable 接口。(4)创建类 ComparableCylinder ,该类为 Cylinder 类的子 类,并实现 Comparable 接口。(5)创建通用类Max其中包含通用方法ma

4、x只要类实现了 Comparable接口,就可以使用 max方法返回两个对象中 较大的一个。Max方法的方法名称为:publicstatic Comparable max(Comparable o1,Comparable o2)( 6) 程序的主方法中分别创建两个 ComparableCircle 类对象 和两个 ComparableCylinder 类对象,并分别以它们为参 数调用max方法,返回两个对象中面积较大的一个。3、选做题: 进一步深入学习多态特性以及利用 Cloneable 接口和 clone 方法实现对象内容的拷贝,并学习消除浅拷贝 (浅复制 ) 的方法。程序要求如下:(1)

5、创建 Circle 类,表示圆;(2)创建Name类,表示人名,其中包含三个 String类型的 数据成员:firstName , middlName和 lastName。( 3) 创建 CloneableCircle 类, CloneableCircle 类是 Circle 类 的 子 类 , 并 实 现 了 Cloneable 接 口 。 要 求Clo neableCircle类中有一个Name类型的数据成员creator ,代表圆对象的创建者姓名。(4) 在 CloneableCircle 类中实现 clone 方法,以实现两个CloneableCircle 类对象内容的克隆。 要求实现

6、对象内容 深拷贝( 深复制)。(5) 为了实现CloneableCircle类对象的深拷贝,Name类也 应该实现 Cloneable 接口,并实现 clone 方法。( 6) 程 序 的 主 方 法 中 使 用 clone 方 法 完 成 两 个CloneableCircle 类对象的深拷贝。三、实验步骤:1. 参考代码:abstract class GeometricObjectprotected String color;protected double weight;protected GeometricObject(String color, doubleweight)this.co

7、lor = color;this.weight = weight;public abstract double findArea();public abstract double findPerimeter();class Circle extends GeometricObjectprotected double radius;public Circle(double radius)super("white", 1.0);this.radius = radius;public double findArea()return radius*radius*Math.PI;pu

8、blic double findPerimeter()return 2*radius*Math.PI;class Rectangle extends GeometricObjectprotected double width;protected double height;public Rectangle(double width, double height)super("white", 1.0);this.width = width;this.height = height;public double findArea()return width*height;publ

9、ic double findPerimeter()return 2*(width + height);public class TestAbpublic static void main(String args) GeometricObject a1 = new Circle(5);GeometricObject a2= new Rectangle(5, 3);test(a1);test(a2);public static void test(GeometricObject a)2. 参考代码:/Circle 类的实现class Circleprotected double radius;pu

10、blic Circle()radius=1.0;public Circle(double r) radius=r;double getRadius()return radius;public double findArea()return radius*radius*Math.PI;/ Cylinder 的实现class Cylinder extends Circleprivate double length;public Cylinder()super();length = 1.0;public Cylinder(double r, double l)super(r);length = l;

11、public double findArea()return2*super.findArea()+(2*getRadius()*Math.PI)*length;public double findVolume()return super.findArea()*length;/ ComparableCircle 类的实现implementsclass ComparableCircle extends CircleComparablepublic ComparableCircle(double r)super(r);public int compareTo(Object o)if (findAre

12、a() > (Circle)o).findArea() return 1;else if (findArea() < (Circle)o).findArea()return -1;elsereturn 0;/ ComparableCylinder 类的实现class ComparableCylinder extends Cylinder implements ComparableComparableCylinder(double r, double l)super(r, l);public int compareTo(Object o)if (findVolume() > (

13、Cylinder)o).findVolume() return 1;else if (findVolume() < (Cylinder)o).findVolume()return -1;elsereturn 0;/Max 类实现class Maxpublic static Comparable max(Comparable o1, Comparable o2)if (pareTo(o2) > 0)return o1;elsereturn o2;/ 主函数类的实现public class TestInterfacepublic static void main(String args)ComparableCircle circle1 = newComparableCircle(5);ComparableCircle circle2 = newComparableCircle(4);Comparable circle = Max.max(circle1, circle2);最大圆半径为: " + (Circle)circle).getRadius();ComparableCylindercylinder1=newComparableCylinder(5, 2);Comparable

温馨提示

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

评论

0/150

提交评论