




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验10 抽象类和接口一、实验名称和性质所属课程Java语言程序设计实验名称抽象类和接口实验学时2实验性质验证 综合设计必做/选做必做 选做二、实验目的1. 设计并使用抽象类;2.学习如何定义接口,掌握接口的实现方式,使用实现了接口的类;3.理解接口与抽象类的区别。 三、实验内容1.设计和实现一个Soundable接口,该接口具有发声功能,同时还能调节声音大小。Soundable接口的这些功能将会由3种声音设备来具体实现,他们分别是收音机Radio、随身听Walkman和手机Mobilephone。同时需要设计一个应用程序类来使用这些实现了Soundable接口的声音设备类。在程序运行时,先询
2、问用户想听那种设备发出声音,然后程序就会按照该设备的工作方式来发出声音(验证性实验)。2.程序会要求用户以规范的格式输入自己的生日日期,然后将使用Date类和Calendar类中的方法计算出用户的生日是星期几,用户的年龄以及出生的年份是否是闰年。四、实验的软硬件环境要求硬件环境要求:PC计算机;内存512MB以上使用的软件名称、版本号以及模块:操作系统:Windows XP或Windows 7软件: JDK 7.0;Eclipse五、知识准备前期要求掌握的知识:了解Java中的抽象类和接口。实验相关理论或原理:1、Java接口和Java抽象类最大的一个区别,就在于Java抽象类可以提供某些方法
3、的部分实现,而Java接口不可以,这大概就是Java抽象类唯一的优点吧,但这个优点非常有用。如果向一个抽象类里加入一个新的具体方法时,那么它所有的子类都将得到了这个新方法,而Java接口做不到这一点,如果向一个Java接口里加入一个新方法,所有实现这个接口的类就无法成功通过编译了,因为你必须让每一个类都再实现这个方法才行,这显然是Java接口的缺点。2、一个抽象类的实现只能由这个抽象类的子类给出,也就是说,这个实现处在抽象类所定义出的继承的等级结构中,而由于Java语言的单继承性,所以抽象类作为类型定义工具的效能大打折扣。六、验证性实验实验要求通过编写程序Birthday.java,编辑、运行
4、后输出结果如图10.1所示:10.1程序运行结果 实验程序代码/Birthday.javaimport java.util.*; / Date,Calendar,Scannerimport java.text.*; / SimpleDateFormatpublic class Birthday public static void main(String args) throws ParseException String birthday, dayOfWeek= ;Date date;Calendar calendar;Scanner scanner = new Scanner(System
5、.in);System.out.println(请输入你的生日日期:yyyy-MM-dd);birthday = scanner.next( );/创建一个日期格式对象 SimpleDateFormat dateFormat = new SimpleDateFormat(yyyy-MM-dd);/获得一个包含当前日期和时间的Calendar子类的实例 calendar = Calendar.getInstance();int currentYear = calendar.get(Calendar.YEAR);/按输入的birthday产生一个Date对象date = dateFormat.pa
6、rse(birthday);/将date对象的值传递给calendar对象calendar.setTime(date); int days = calendar.get(Calendar.DAY_OF_WEEK); switch( days ) case 1: dayOfWeek = 星期日;break; case 2: dayOfWeek = 星期一;break; case 3: dayOfWeek = 星期二;break; case 4: dayOfWeek = 星期三;break; case 5: dayOfWeek = 星期四;break; case 6: dayOfWeek = 星期
7、五;break; case 7: dayOfWeek = 星期六;break; System.out.println(你的生日是: + dayOfWeek);int birthYear = calendar.get(Calendar.YEAR);if (birthYear%4=0)&(birthYear%100!=0)|(birthYear%400=0) System.out.println(birthYear + 年: 是闰年); else System.out.println(birthYear + 年: 不是闰年); int age = currentYear-birthYear; Sy
8、stem.out.println(你现在是: + age + 岁); 六、 设计性实验1实验要求新建、编译、运行InterfaceTest.java文件,实验结果如图10.2所示:10.2运行结果图实验程序代码/InterfaceTest.javaimport java.util.Scanner;代码1 /完善此处代码,定义Soundable接口,包含increaseVolume( ) 、decreaseVolume( ) 、stopSound( ) 、 playSound( )四个方法。class Radio implements Soundable public void increase
9、Volume( ) System.out.println(增大收音机音量); public void decreaseVolume( ) System.out.println(减小收音机音量); public void stopSound( ) System.out.println(关闭收音机); public void playSound( ) System.out.println(收音机播放广播); class Walkman implements Soundable 代码2 /完善此处代码class Mobilephone implements Soundable public void
10、 increaseVolume( ) System.out.println(增大手机音量); public void decreaseVolume( ) System.out.println(减小手机音量); public void stopSound( ) System.out.println(关闭手机); public void playSound( ) System.out.println(手机发出来电铃声); class People private String name; private int age; public void listen(Soundable s) s.play
11、Sound( ); public class InterfaceTest public static void main(String args) int i; People sportsman = new People( ); Scanner scanner = new Scanner(System.in); Soundable soundDevice = new Soundable3; /往声音设备数组中放入能发声的设备 soundDevice0 = new Radio( ); soundDevice1 = new Walkman( ); soundDevice2 =代码3;/创建手机对象
12、并赋值给soundDevice2 System.out.println(你想听什么? 请输入选择:0-收音机 1-随声听 2-手机); i = scanner.nextInt( ); /开始听声音 sportsman.listen(soundDevicei); soundDevicei.increaseVolume( ); soundDevicei.stopSound(); /调用stopSound( )方法 2、实验要求(1) 仔细阅读程序清单,完成代码1代码2 。 (2) 为程序增加一个摩托车类Motorcycle,该类也实现了Transport接口。 程序参考代码 该程序共有5个文件:T
13、ransport.java,Car.java,Ship.java,Plane.java,Interfacetest.java/Transport.javapublic interface Transport public void travel(); public void stop(); /Car.javapublic class Car implements Transport public void travel() System.out.println(小汽车在公路上行驶); public void stop() System.out.println(小汽车停止行驶); /Ship.j
14、avapublic class Ship implements Transport public void travel() System.out.println(轮船在海上航行); public void stop() System.out.println(轮船停止航行); /Plane.javapublic class Plane implements Transport public void travel() System.out.println(飞机在空中飞行); public void stop() System.out.println(飞机停止飞行); / InterfaceTest.javaimport java.util.Scanner;class People public void drive(Transport s) (); public class InterfaceTest public static void main(String args) int i; People driver = new People(); Scanner scanner = new Scanner(System.in); Transport transport = new Tra
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电力行业员工学习刘永坦先进事迹心得体会
- 学校科技创新实验室教育工作计划
- 幼儿园疫情期间小班活动安排班务计划
- 合成树脂瓦施工排气工艺流程他
- 施工期间客户服务措施
- 新闻媒体疫情防控应急预案及工作措施
- 副校长后勤管理年度个人工作总结范文
- 模拟法庭基本流程介绍
- 以对话之钥启哲学之思:高中政治《生活与哲学》模块教学新探
- 医院院感宣传教育工作计划
- 数智化碳管理与应用智慧树知到期末考试答案章节答案2024年浙江农林大学
- 南阳医专三年制专科卫生信息管理专业人才培养方案
- 印刷工艺教案新编-2024鲜版
- 高职专业人才培养方案-美术(书法方向)专业人才培养方案
- 车间成本管理与控制课件
- 绿色建材招商引资方案
- 消控证(中级)考试练习题集
- 小学一二三年级劳动与技术《整理书包》课件
- 单调性与最大(小)值(第二课时)课件高一上学期数学人教A版
- 80、90后年轻人思想动态调研报告
- 江苏省射阳中等专业学校招聘真题
评论
0/150
提交评论