实验抽象类和接口.docx
- 文档编号:4814282
- 上传时间:2022-12-09
- 格式:DOCX
- 页数:9
- 大小:18.70KB
实验抽象类和接口.docx
《实验抽象类和接口.docx》由会员分享,可在线阅读,更多相关《实验抽象类和接口.docx(9页珍藏版)》请在冰豆网上搜索。
实验抽象类和接口
实验10抽象类和接口
一、实验名称和性质
所属课程
Java语言程序设计
实验名称
抽象类和接口
实验学时
2
实验性质
?
验证综合?
设
计
必做/选做
?
必做_选做
二、实验目的
1.设计并使用抽象类;
2.学习如何定义接口,掌握接口的实现方式,使用实现了接口的类;
3.理解接口与抽象类的区别。
三、实验内容
1.设计和实现一个Soundable接口,该接口具有发声功能,同时还能调节声音大小。
Soundable接口的这些功能将会由3种声音设备来具体实现,他们分别是收音机Radio、随身听Walkman和手机
Mobilephone。
同时需要设计一个应用程序类来使用这些实现了Soundable接口的声音设备类。
在程序运行时,先询问用户想听那种设备发出声音,然后程序就会按照该设备的工作方式来发出声音(验
证性实验)。
2.程序会要求用户以规范的格式输入自己的生日日期,然后将使用Date类和Calendar类中的方法计算出用户的生日是星期几,用户的年龄以及出生的年份是否是闰年。
四、实验的软硬件环境要求
硬件环境要求:
PC计算机;内存512MB^上
使用的软件名称、版本号以及模块:
操作系统:
WindowsXP或Windows7
软件:
JDK7.0;Eclipse
五、知识准备
前期要求掌握的知识:
了解Java中的抽象类和接口。
实验相关理论或原理:
1、Java接口和Java抽象类最大的一个区别,就在于Java抽象类可以提供某些方法的部分实现,而Java接口不可以,这大概就是Java抽象类唯一的优点吧,但这个优点非常有用。
如果向一个抽象类里加入一个新的具体方法时,那么它所有的子类都将得到了这个新方法,而Java接口做不到这一点,如果向一个Java接口里加入一个新方法,所有实现这个接口的类就无法成功通过编译了,因为你必须让每一个类都再实现这个方法才行,这显然是Java接口的缺点。
2、一个抽象类的实现只能由这个抽象类的子类给出,也就是说,这个实现处在抽象类所定义出的继承的等级结构中,而由于Java语言的单继承性,所以抽象类作为类型定义工具的效能大打折扣。
六、验证性实验
实验要求
通过编写程序Birthday.java,编辑、运行后输出结果如图10.1所示:
S_LProblems
@Javadoc用Declarartion
SConsole貂
^terminated
Birthday[JavaApplication]C:
\rnyec11pse-&.5\Genu!
tf
请输入你的生日日期:
InMg丘厢的Eh是;星期一:
LW齐年:
杲闰年祢现在是:
"岁
10.1程序运行结果
实验程序代码
//Birthday.java
importjava.util.*;//Date,Calendar,Scanner
throws
importjava.text.*;IISimpleDateFormatpublicclassBirthday{
publicstaticvoidmain(Stringargs[])
ParseException{
Stringbirthday,dayOfWeek二"";
Datedate;
Calendarcalendar;
Scannerscanner=newScanner(System.in);
System.out.println("请输入你的生日日期:
yyyy-MM-dd");
birthday=scanner.next();
//创建一个日期格式对象
SimpleDateFormatdateFormat=newSimpleDateFormat("yyyy-MM-dd");
//获得一个包含当前日期和时间的Calendar子类的实例calendar=Calendar.getInstance();
intcurrentYear=calendar.get(Calendar.YEAR);
//按输入的birthday产生一个Date对象
date=dateFormat.parse(birthday);
//将date对象的值传递给calendar对象calendar.setTime(date);
intdays=calendar.get(Calendar.DAY_OF_WE);EK
switch(days){
case1:
dayOfWeek="星期日";break;
case2:
dayOfWeek="星期一";break;
case3:
dayOfWeek="星期二";break;
case4:
dayOfWeek="星期三";break;
case5:
dayOfWeek="星期四";break;
case6:
dayOfWeek="星期五”;break;
case7:
dayOfWeek="星期六";break;
}
System.out.println(”你的生日是:
"+dayOfWeek);
intbirthYear=calendar.get(Calendar.YEAR
if
(((birthYear%4==0)&&(birthYear%100!
=0))||(birthYear%400==0)
)
System.out.println(birthYear+"年:
是闰年");
else
System.out.println(birthYear+"年:
不是闰年");
intage=currentYear-birthYear;
System.out.println(”你现在是:
"+age+"岁”);
}
}
六、设计性实验
1.实验要求
新建、编译、运行InterfaceTest.java文件,实验结果如图
10.2所示:
:
.Problemst \*<.ProDem? 在Ja\adoc@DeelmrationQLonscIs^S 確册么晴献麒;皿誠: -随声昕舟机 In 唏憩听什么7请输入选择;0-收音机: L-随戸听手机 b青机播放厂播 随声听发出育乐 軸收訓音量 竜咒随声听音量 关诩也音机 关囲陡声听 *Problems淞JdwadccDeckration|@Console歸xpterminated*lnterfaceTest[JavaApplication]C: \myeclip»悔抿昕什么2请输入选择: A收音机-随声听4手机岸机岌出来电铃声増大手机音量关闭手机 10.2运行结果图 实验程序代码 //InterfaceTest.java importjava.util.Scanner; 代码1//完善此处代码,定义Soundable接口,包含 increaseVolume()、decreaseVolume()、stopSound()、 playSound()四个方法。 classRadioimplementsSoundable{ publicvoidincreaseVolume(){ System.out.println(”增大收音机音量"); } publicvoiddecreaseVolume(){ System.out.println(”减小收音机音量"); } publicvoidstopSound(){ System.out.println(”关闭收音机"); } publicvoidplaySound(){ System.out.println(”收音机播放广播"); classWalkmanimplementsSoundable{ 代码2//完善此处代码 } classMobilephoneimplementsSoundable{ publicvoidincreaseVolume(){ System.out.println(”增大手机音量”); } publicvoiddecreaseVolume(){ System.out.println(”减小手机音量"); } publicvoidstopSound(){ System.out.println(”关闭手机"); } publicvoidplaySound(){ System.out.println(”手机发出来电铃声"); } } classPeople{ privateStringname; privateintage; publicvoidlisten(Soundables){ s.playSound(); } } publicclassInterfaceTest{ publicstaticvoidmain(String[]args){ inti; Peoplesportsman二newPeople(); Scannerscanner=newScanner(System.in); Soundable[]soundDevice=newSoundable[3]; //往声音设备数组中放入能发声的设备 soundDevice[0]= soundDevice[1]= soundDevice[2]= soundDevice[2] newRadio(); newWalkman(); 代码3;〃创建手机对象并赋值给 System.out.println(”你想听什么? 请输入选择: 0-收音机 1-随声听2-手机"); i=scanner.nextInt(); //开始听声音sportsman」isten(soundDevice[i]); 调用stopSound()方法 soundDevice[i].increaseVolume(); soundDevice[i].stopSound();// 2、实验要求 (1)仔细阅读程序清单,完成代莎「~代码2。 (2)为程序增加一个摩托车类Motorcycle,该类也实现了 Transport接口。 程序参考代码 该程序共有5个文件: Transport.java,Car.java,Ship.java,Plane.java,Interfacetest.java //Transport.java publicinterfaceTransport{ publicvoidtravel();publicvoidstop(); } //Car.java publicclassCarimplementsTransport{ publicvoidtravel(){ System.out.println(”小汽车在公路上行驶”); } publicvoidstop(){ System.out.println(”小汽车停止行驶"); } } //Ship.java publicclassShipimplementsTransport{ publicvoidtravel(){ System.out.println(”轮船在海上航行"); } publicvoidstop(){ System.out.println(”轮船停止航行"); } } //Plane.java publicclassPlaneimplementsTransport{ publicvoidtravel(){ System.out.println(”飞机在空中飞行"); publicvoidstop(){ System.out.println(”飞机停止飞行"); } } //IntefaceTest.java importjava.util.Scanner; classPeople{ publicvoiddrive(Transports){ s.travel(); } } publicclassInterfaceTest{ publicstaticvoidmain(String[]args){ inti; Peopledriver=newPeople(); Scannerscanner=newScanner(System.in); Transport[]transport=newTransport[3]; //往交通工具数组中放入能具体的交通工具 transport[O]=newCar(); transport[1]=newShip(); 代码1//创建飞机对象并赋值给Transport[2] System.out.println(”你想驾驶什么? : 0-小汽车1-轮 船2-飞机"); i=scanner.nextInt(); //司机开始驾驶 driver.drive(transport[i]); 代码2//调用stop()方法 } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 抽象 接口