




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验6抽象类和接口一、 实验目的:1、 学习掌握抽象类的概念和使用方法。2、 学习掌握接口的概念和定义接口的方法。3、 学习使用Cloneable接口和clone方法进行对象内容的复制。4、 理解浅复制和深复制的概念,掌握覆盖clone方法进行对象内容深复制的技术。二、 实验任务:1、 学习掌握抽象类的概念和使用方法。程序要求:(1) 首先创建一个类家族,其中抽象类几何图形类GeometricObject为父类,圆类Circle和矩形类Rectangle为子类。几何图形类GeometricObject中定义保护型字符串变量color,表示图形的颜色;该类要具备构造方法和两个抽象方法findAr
2、ea和findPerimeter,抽象方法findArea求图形面积,抽象方法findPerimeter求图形周长。(2) Circle类和Rectangle类是GeometricObject类的子类,其中应实现父类的抽象方法。(3) 程序主方法中创建两个几何对象,一个圆和一个矩形,并用GeometricObject类的引用变量引用它们,调用抽象方法。 2、 学习接口的概念和利用接口实现多态的方法。程序要求如下:(1) 首先创建圆类Circle和圆柱体类Cylinder,其中Circle类是父类,Cylinder类是子类;(2) 创建接口Comparable,其中包含一个抽象方法compare
3、To,用来比较对象的大小。抽象方法compareTo的形式如下: public int compareTo(Object o);(3) 创建类ComparableCircle,该类为Circle类的子类,并实现Comparable接口。(4) 创建类ComparableCylinder,该类为Cylinder类的子类,并实现Comparable接口。(5) 创建通用类Max,其中包含通用方法max,只要类实现了Comparable接口,就可以使用max方法返回两个对象中较大的一个。Max方法的方法名称为: public static Comparable max(Comparable o1,
4、Comparable o2)(6) 程序的主方法中分别创建两个ComparableCircle类对象和两个ComparableCylinder类对象,并分别以它们为参数调用max方法,返回两个对象中面积较大的一个。3、 选做题:进一步深入学习多态特性以及利用Cloneable接口和clone方法实现对象内容的拷贝,并学习消除浅拷贝(浅复制)的方法。程序要求如下:(1) 创建Circle类,表示圆;(2) 创建Name类,表示人名,其中包含三个String类型的数据成员:firstName,middlName和lastName。(3) 创建CloneableCircle类,CloneableCi
5、rcle类是Circle类的子类,并实现了Cloneable接口。要求CloneableCircle类中有一个Name类型的数据成员creator,代表圆对象的创建者姓名。(4) 在CloneableCircle类中实现clone方法,以实现两个CloneableCircle类对象内容的克隆。要求实现对象内容深拷贝(深复制)。(5) 为了实现CloneableCircle类对象的深拷贝,Name类也应该实现Cloneable接口,并实现clone方法。(6) 程序的主方法中使用clone方法完成两个CloneableCircle类对象的深拷贝。三、 实验步骤:1.参考代码:abstract c
6、lass 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 double radiu
7、s; 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; public Rectangle
8、(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 Circle(5); G
9、eometricObject 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; public double
10、 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)*length; public dou
11、ble 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() < (Circle)o).findAr
12、ea() 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() < (Cylinder)o).
13、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 Compar
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 猫咪黑下巴的处理
- 农业无人机租赁服务市场潜力分析与平台运营优化策略报告
- 房建工程移交方案(3篇)
- 农业无人机租赁平台在2025年农村市场的运营潜力分析报告
- 东莞东城装饰工程方案(3篇)
- 牵引车安全培训课件
- 安全教育心得培训总结课件
- 农业可持续发展背景下2025年智能灌溉系统技术应用分析
- 荔湾小学面试题库及答案
- 农业产业强镇项目资金申请报告:2025年政策导向与区域布局分析
- 敦煌课件讲解稿子
- 2025年环境工程师初级职称考试试题及答案解析
- 眼科特检基础知识培训课件
- 统编版高中思想政治必修1第一课社会主义从空想到科学、从理论到实践的发展1.2科学社会主义的理论与实践 教学课件
- 摄影剪辑基本知识培训课件
- 北京高校标准化食堂标准(2026版)讲解
- 2025北京市交通发展年度报告
- 凿壁借光课文讲解
- 2025年全国招标采购专业技能大赛(地方组)历年参考题库含答案详解(5套)
- 2025至2030全球及中国医疗设备维修服务行业项目调研及市场前景预测评估报告
- 2025年汽车驾驶员(技师)考试试题及答案
评论
0/150
提交评论