《实验抽象类和接口(7页).doc》由会员分享,可在线阅读,更多相关《实验抽象类和接口(7页).doc(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
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抽象类最大的一个区别,就在于J
3、ava抽象类可以提供某些方法的部分实现,而Java接口不可以,这大概就是Java抽象类唯一的优点吧,但这个优点非常有用。如果向一个抽象类里加入一个新的具体方法时,那么它所有的子类都将得到了这个新方法,而Java接口做不到这一点,如果向一个Java接口里加入一个新方法,所有实现这个接口的类就无法成功通过编译了,因为你必须让每一个类都再实现这个方法才行,这显然是Java接口的缺点。2、一个抽象类的实现只能由这个抽象类的子类给出,也就是说,这个实现处在抽象类所定义出的继承的等级结构中,而由于Java语言的单继承性,所以抽象类作为类型定义工具的效能大打折扣。版权文档,请勿用做商业用途六、验证性实验实验
4、要求通过编写程序Birthday.java,编辑、运行后输出结果如图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 cale
5、ndar;Scanner scanner = new Scanner(System.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(Cale
6、ndar.YEAR);/按输入的birthday产生一个Date对象date = dateFormat.parse(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;
7、 case 5: dayOfWeek = 星期四;break; case 6: dayOfWeek = 星期五;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.o
8、ut.println(birthYear + 年: 不是闰年); int age = currentYear-birthYear; System.out.println(你现在是: + age + 岁); 六、 设计性实验1实验要求新建、编译、运行InterfaceTest.java文件,实验结果如图10.2所示:10.2运行结果图实验程序代码/InterfaceTest.javaimport java.util.Scanner;代码1 /完善此处代码,定义Soundable接口,包含increaseVolume( ) 、decreaseVolume( ) 、stopSound( ) 、 pl
9、aySound( )四个方法。版权文档,请勿用做商业用途class Radio implements Soundable public void increaseVolume( ) System.out.println(增大收音机音量); public void decreaseVolume( ) System.out.println(减小收音机音量); public void stopSound( ) System.out.println(关闭收音机); public void playSound( ) System.out.println(收音机播放广播); class Walkman i
10、mplements Soundable 代码2 /完善此处代码class Mobilephone implements Soundable public void increaseVolume( ) System.out.println(增大手机音量); public void decreaseVolume( ) System.out.println(减小手机音量); public void stopSound( ) System.out.println(关闭手机); public void playSound( ) System.out.println(手机发出来电铃声); class Pe
11、ople private String name; private int age; public void listen(Soundable s) s.playSound( ); 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; /往声音设备数组中放入能发声的设备 soun
12、dDevice0 = new Radio( ); soundDevice1 = new Walkman( ); soundDevice2 =代码3;/创建手机对象并赋值给soundDevice2 System.out.println(你想听什么? 请输入选择:0-收音机 1-随声听 2-手机);版权文档,请勿用做商业用途 i = scanner.nextInt( ); /开始听声音 sportsman.listen(soundDevicei); soundDevicei.increaseVolume( ); soundDevicei.stopSound(); /调用stopSound( )方法
13、 2、实验要求(1) 仔细阅读程序清单,完成代码1代码2 。 (2) 为程序增加一个摩托车类Motorcycle,该类也实现了Transport接口。 程序参考代码 该程序共有5个文件:Transport.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
14、public void travel() System.out.println(小汽车在公路上行驶); public void stop() System.out.println(小汽车停止行驶); /Ship.javapublic class Ship implements Transport public void travel() System.out.println(轮船在海上航行); public void stop() System.out.println(轮船停止航行); /Plane.javapublic class Plane implements Transport pub
15、lic void travel() System.out.println(飞机在空中飞行); public void stop() System.out.println(飞机停止飞行); / InterfaceTest.javaimport java.util.Scanner;class People public void drive(Transport s) s.travel(); public class InterfaceTest public static void main(String args) int i; People driver = new People(); Scanner scanner = new Scanner(System.in); Transport transport = new Transport3; /往交通工具数组中放入能具体的交通工具 transport0 = new Car(); transport1 = new Ship(); 代码1 /创建飞机对象并赋值给Transport2 System.out.println(你想驾驶什么?:0-小汽车 1-轮船 2-飞机); i = scanner.nextInt(); /司机开始驾驶 driver.drive(transporti); 代码2 /调用stop()方法 -第 7 页-
限制150内