


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 探索电的世界
- 江苏省扬州市翠岗达标名校2025年初三寒假网上测试生物试题含解析
- 辽宁省沈阳市东北育才双语校2025年中考冲刺(3)化学试题试卷含解析
- 山西省大学附属中学2024-2025学年高三下学期第一次统测历史试题含解析
- 柳州铁道职业技术学院《德语视听》2023-2024学年第二学期期末试卷
- 四川省广元市虎跳中学2025年高三下学期开学摸底(文理合卷)数学试题含解析
- 江西省上饶市民校考试联盟2025届高考数学试题模拟考最后一考试题含解析
- 吉林省长春市第103中学2025年初三二模冲刺生物试题(一)含解析
- 吉林省抚松五中、长白县实验中学2024-2025学年高三4月暑期摸底考试物理试题试卷含解析
- 四川省乐山市井研县2024-2025学年初三下学期中考考前质量检测试题三(5月模拟)物理试题含解析
- 农业文化创意产业园项目可行性研究报告
- 2025绿地集团购房合同样本
- GB/T 37507-2025项目、项目群和项目组合管理项目管理指南
- 机器视觉试题答案及解析
- GB 14930.2-2025食品安全国家标准消毒剂
- 攀西地区钒钛磁铁矿铁钛综合回收试验研究
- 电商平台服务协议、交易规则
- 档案数字化存储方式试题及答案
- 《时间的故事》(教学设计)-2024-2025学年人美版(2024)美术一年级下册
- 2025年邮政社招笔试试题及答案
- 2025年保密观知识测试题及答案
评论
0/150
提交评论