1.接口多态的综合案例
1.1 笔记本电脑
笔记本电脑(laptop)通常具备使用USB设备的功能。在生产时,笔记本都预留了可以插入USB设备的USB接口, 但具体是什么USB设备,笔记本厂商并不关心,只要符合USB规格的设备都可以。 定义USB接口,具备最基本的开启功能和关闭功能。鼠标和键盘要想能在电脑上使用,那么鼠标和键盘也必须遵守 USB规范,实现USB接口,否则鼠标和键盘的生产出来也无法使用。
1.2 案例分析
进行描述笔记本类,实现笔记本使用USB鼠标、USB键盘
USB接口,包含开启功能、关闭功能笔记本类,包含运行功能、关机功能、使用USB设备功能鼠标类,要实现USB接口,并具备点击的方法键盘类,要实现USB接口,具备敲击的方法
看图理解分析:
1.3案例实现
定义USB接口:
interface USB {void open();// 开启功能 void close();// 关闭功能 }
定义鼠标类:
class Mouse implements USB {public void open() {System.out.println("鼠标开启,红灯闪一闪"); }public void close() {System.out.println("鼠标关闭,红灯熄灭"); }public void click(){System.out.println("鼠标单击"); } }
定义键盘类:
class KeyBoard implements USB {public void open() {System.out.println("键盘开启,绿灯闪一闪"); }public void close() {System.out.println("键盘关闭,绿灯熄灭"); }public void type(){System.out.println("键盘打字"); } }
定义笔记本类:
class Laptop {// 笔记本开启运行功能 public void run() {System.out.println("笔记本运行"); }// 笔记本使用usb设备,这时当笔记本对象调用这个功能时,//必须给其传递一个符合USB规则的USB设备 public void useUSB(USB usb) {// 判断是否有USB设备 if (usb != null) {usb.open(); // 类型转换,调用特有方法 if(usb instanceof Mouse){Mouse m = (Mouse)usb; m.click(); }else if (usb instanceof KeyBoard){KeyBoard kb = (KeyBoard)usb; kb.type(); }usb.close(); } }public void shutDown() {System.out.println("笔记本关闭"); } }
测试类,代码如下:
public class Test {public static void main(String[] args) {// 创建笔记本实体对象 Laptop lt = new Laptop(); // 笔记本开启 lt.run(); // 创建鼠标实体对象Usb u = new Mouse(); // 笔记本使用鼠标 lt.useUSB(u); // 创建键盘实体对象 KeyBoard kb = new KeyBoard(); // 笔记本使用键盘 lt.useUSB(kb); // 笔记本关闭 lt.shutDown(); }}
浏览了我的笔记之后。一定要看一下综合案例,不仅要会理论,还要会用。