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

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上实验6抽象类和接口一、 实验目的:1、 学习掌握抽象类的概念和使用方法。2、 学习掌握接口的概念和定义接口的方法。3、 学习使用Cloneable接口和clone方法进行对象内容的复制。4、 理解浅复制和深复制的概念,掌握覆盖clone方法进行对象内容深复制的技术。二、 实验任务:1、 学习掌握抽象类的概念和使用方法。程序要求:(1) 首先创建一个类家族,其中抽象类几何图形类GeometricObject为父类,圆类Circle和矩形类Rectangle为子类。几何图形类GeometricObject中定义保护型字符串变量color,表示图形的颜色;该类要具备构造方法

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

3、一个抽象方法compareTo,用来比较对象的大小。抽象方法compareTo的形式如下: public int compareTo(Object o);(3) 创建类ComparableCircle,该类为Circle类的子类,并实现Comparable接口。(4) 创建类ComparableCylinder,该类为Cylinder类的子类,并实现Comparable接口。(5) 创建通用类Max,其中包含通用方法max,只要类实现了Comparable接口,就可以使用max方法返回两个对象中较大的一个。Max方法的方法名称为: public static Comparable max(Co

4、mparable o1, Comparable o2)(6) 程序的主方法中分别创建两个ComparableCircle类对象和两个ComparableCylinder类对象,并分别以它们为参数调用max方法,返回两个对象中面积较大的一个。3、 选做题:进一步深入学习多态特性以及利用Cloneable接口和clone方法实现对象内容的拷贝,并学习消除浅拷贝(浅复制)的方法。程序要求如下:(1) 创建Circle类,表示圆;(2) 创建Name类,表示人名,其中包含三个String类型的数据成员:firstName,middlName和lastName。(3) 创建CloneableCircle

5、类,CloneableCircle类是Circle类的子类,并实现了Cloneable接口。要求CloneableCircle类中有一个Name类型的数据成员creator,代表圆对象的创建者姓名。(4) 在CloneableCircle类中实现clone方法,以实现两个CloneableCircle类对象内容的克隆。要求实现对象内容深拷贝(深复制)。(5) 为了实现CloneableCircle类对象的深拷贝,Name类也应该实现Cloneable接口,并实现clone方法。(6) 程序的主方法中使用clone方法完成两个CloneableCircle类对象的深拷贝。三、 实验步骤:1.参考

6、代码:abstract class GeometricObject protected String color; protected double weight; protected GeometricObject(String color, double weight) this.color = color; this.weight = weight; public abstract double findArea(); public abstract double findPerimeter();class Circle extends GeometricObject protected

7、 double radius; public Circle(double radius) super("white", 1.0); this.radius = radius; public double findArea() return radius*radius*Math.PI; public double findPerimeter() return 2*radius*Math.PI; class Rectangle extends GeometricObject protected double width; protected double height; pub

8、lic Rectangle(double width, double height) super("white", 1.0); this.width = width; this.height = height; public double findArea() return width*height; public double findPerimeter() return 2*(width + height); public class TestAb public static void main(String args) GeometricObject a1 = new

9、 Circle(5); GeometricObject a2= new Rectangle(5, 3); test(a1); test(a2); public static void test(GeometricObject a) System.out.println(a.findArea(); 2.参考代码:/Circle类的实现class Circle protected double radius; public Circle() radius=1.0; public Circle(double r) radius=r; double getRadius()return radius;

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

11、h; public double findVolume() return super.findArea()*length; / ComparableCircle类的实现class ComparableCircle extends Circle implements Comparable public ComparableCircle(double r) super(r); public int compareTo(Object o) if (findArea() > (Circle)o).findArea() return 1; else if (findArea() < (Cir

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

13、(Cylinder)o).findVolume() return -1; else return 0; /Max类实现 class Max public static Comparable max(Comparable o1, Comparable o2) if (pareTo(o2) > 0) return o1; else return o2; /主函数类的实现public class TestInterface public static void main(String args) ComparableCircle circle1 = new ComparableCircle(5); ComparableCircle circle2 = new ComparableCircle(4); Comparable circle = Max.max(circle1, circle2); System.out.println("最大圆半径为: " + (Circle)circle).getRadius(); ComparableCylinder cylinder1 = new ComparableCylinder(5, 2); ComparableCylinder cylinder2 = new ComparableCyl

温馨提示

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

评论

0/150

提交评论