2013242032-弓彩霞-实验三(4)

2020-05-04 12:19

// TODO Auto-generated method stub return super.toString(); } } 运行结果贴图: 读懂下面模板代码,按要求补充程序并调试运行。 (一)设计和实现一个 Soundable 接口 , 该接口具有发声功能 , 同时还能够调节声音大小。 Soundable 接口的这些功能将会由 3 种声音设备来具体实现 , 它们分别是收音机 Radio 、随身昕 Walkman 和手机 Mobilephone 。最后还要设计一个应用程序类来使用这些实现了 Soundable 接口的声音设备类。程序运行时 , 先询问用户想听哪种设备 , 然后程序就会按照该设备的工作方式来发出声音。 仔细阅读程序清单1-9, 并完成其中的代码1~代码3。 程序清单1-9 InterfaceTest.java import java.util.Scanner;

interface Soundable { public void increaseVolume( );//音量升高 public void decreaseVolume( );//音量降低 public void stopSound( );//音乐停止 public void playSound( );//音乐开始播放 } // 类Radio 继承接口Soundable 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(\收音机播放广播\); } } //类Walkman继承接口Soundable class Walkman 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(\随声听发出音乐\);// 输出随声听发出音乐 } } //手机类继承接口Soundable class Mobilephone implements Soundable { public void increaseVolume( ) { System.out.println(\增大手机音量\);// 输出增大手机音量 } public void decreaseVolume( ) {

} } class People { 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 Soundable[3]; //往声音设备数组中放入能发声的设备 soundDevice[0] = new Radio( ); soundDevice[1] = new Walkman( ); soundDevice[2]=new Mobilephone(); //创建手机对象并赋值给soundDevice[2] System.out.println(\你想听什么? 请输入选择:0-收音机 1-随声听 2-手机\); i = scanner.nextInt( ); //开始听声音 sportsman.listen(soundDevice[i]); soundDevice[i].increaseVolume( ); soundDevice[i].stopSound();//调用stopSound( )方法 } } System.out.println(\减小手机音量\);// 输出减小手机音量 } public void stopSound( ) { System.out.println(\关闭手机\);// 输出关闭手机 } public void playSound( ) { System.out.println(\手机发出来电铃声\);// 输出手机发出来电铃声

(2) 打开文本编辑器编辑 InterfaceTest.java 并保存 , 然后在Eclipse 环境中进行编译 , 编译的结果将会产生 6 个 class 文件 , 其中包括 Soundable.class, 虽然 Soundable 本身是一个接口 , 但编译之后也会产生 class 文件。 思考 (1) 请问在 InterfaceTest 类中 ,SoundDevice[] 数组是Soundable类型的 , 该数组为什么能存放 3 种不同的对象 Radio、Walkman 和 Mobilephone 呢 ? 答:SoundDevice[]数组是接口类型;因为类Radio、Walkman和Mobilephone都实现了接口SoundDevice,则接口SoundDevice就类似于这三个类的父类,而父类的引用可以指向一个子类的对象,所以该数组可以存放三个不同的对象。 (2) 在程序中 ,Soundable 是一个接口 , 那么该接口可以被实例化吗? 答:不可以。因为接口和抽象类相似,可以声明引用类型的变量,但不可使用new操作符创建接口的实例对象。 (3) 现在假定要为程序增加一个闹钟类 Clock, 该类也实现 Soundable 接口 , 能够发出滴答(3) 编译之后运行这个程序 , 观察所得结果。 声 , 请将以下的 Clock 类加入到 InterfaceTest.java 程序中 , 并在 InterfaceTest 类的 main() 方法中加入 SoundDevice[3] new Clock(); 语句。 class Clock implements Soundable{ public void Stopsound(){ System.out.println(\关闭闹钟 \} public void Playsound(){ system.out.println(\闹钟发出滴答声 \ } } 修改之后 , 重新编译 InterfaceTest.java 并运行它 , 观察结果。 (4) 在第 (3) 小题中由于新加入的 Clock 类仅仅实现了 Soundable 接口的stopsound() 和 playsound() 方法 , 而 increaseVolume() 和 decreaseVolume() 方法没有实现 , 因此它实质上

是一个抽象类 , 而抽象类是不能实例化的 , 所以导致编译错误。但是按照常理 , 闹钟的滴答声确实是不可以增大或减小的 , 那么如何解决这个问题呢 ? 现在请在 Clock 类中加入下面两个含 {} 空方法体的方法实现 , 再编译运行程序 , 看看会有什么变化。 public void increaseVolume(){} public void decreaseVolume(){} 图3.14 (5) 现在请模仿本实验的程序设计出一个自己的接口程序 , 要求先设计一个 moveable 可移动接口 , 然后分别设计 3 个类 , 即汽车 Car 、轮船 Ship 、飞机 Aircraft 来实现该接口 , 最后设计一个应用程序来使用它们。 import java.util.Scanner; interface movable { public void increasespeed( ); public void decreasespeed( ); public void stopMove( ); public void startMove( ); } class Car implements movable { public void increasespeed( ) {


2013242032-弓彩霞-实验三(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:电缆型号

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: