我们鼠标和键盘实现USB接口,那么我们鼠标和键盘就变成了USB设备,这时候我们就可以把它放到笔记本电脑里面去用

 package com.biggw.day10.demo07;

 /**
* @author gw
* @date 2019/11/2 0002 下午 16:46
*/
public class Computer {
public void open() {
System.out.println("打开电脑!");
} public void close() {
System.out.println("关闭电脑!");
} public void useDevice(Usb usb) {
if (usb instanceof KeyBorad) {
KeyBorad keyBorad = (KeyBorad) usb;
keyBorad.open();
keyBorad.type();
keyBorad.close();
} else if (usb instanceof Mouse) {
Mouse mouse = (Mouse) usb;
mouse.open();
mouse.click();
mouse.close();
}
}
}

Computer

 package com.biggw.day10.demo07;

 /**
* @author gw
* @date 2019/11/2 0002 下午 16:42
*/
public interface Usb {
public abstract void open(); public abstract void close();
}

Usb 接口

 package com.biggw.day10.demo07;

 /**
* @author gw
* @date 2019/11/2 0002 下午 16:44
*/
public class Mouse implements Usb {
@Override
public void open() {
System.out.println("打开鼠标!");
} @Override
public void close() {
System.out.println("关闭鼠标!");
} public void click() {
System.out.println("点击鼠标!");
}
}

Mouse Usb接口的实现类

 package com.biggw.day10.demo07;

 /**
* @author gw
* @date 2019/11/2 0002 下午 16:43
*/
public class KeyBorad implements Usb {
@Override
public void open() {
System.out.println("打开键盘!");
} @Override
public void close() {
System.out.println("关闭键盘!");
} public void type() {
System.out.println("键盘输入文字!");
}
}

KeyBoard Usb接口的实现类

 package com.biggw.day10.demo07;

 /**
* @author gw
* @date 2019/11/2 0002 下午 16:52
*/
public class Main {
public static void main(String[] args) {
Usb usb = new KeyBorad();
Usb usb1 = new Mouse(); Computer computer = new Computer();
computer.open();
computer.useDevice(usb);
computer.useDevice(usb1);
computer.close(); /*点击鼠标!
打开电脑!
打开键盘!
键盘输入文字!
关闭键盘!
打开鼠标!
关闭鼠标!
关闭电脑!*/
}
}

Main 方法入口

最新文章

  1. JVM之Class文件结构
  2. npm 使用记录
  3. struct与union字节大小的终极解释
  4. RedHat下编译安装Boost
  5. 【转】unity开发android游戏(一)搭建Unity安卓开发环境
  6. 算法效果AB测试中的PV-UV不对称性
  7. HDU 4089 Activation(概率DP)(转)
  8. Safari HTML5 Canvas Guide: Creating Charts and Graphs
  9. openNebulafrontEnd ComputeNode 配置记录
  10. LPC1788的spi使用
  11. Dijkstra算法的二叉堆优化
  12. php 守护进程类
  13. 与班尼特·胡迪一起做生意 (HZUN-2261)
  14. 发送邮件工具类MailHelper
  15. css奇技淫巧-色彩渐变与动态渐变
  16. LINUX 系统下部署 NFS服务
  17. js apply使用
  18. ArcGIS案例学习笔记2_2_模型构建器和山顶点提取批处理
  19. mysql_事务
  20. 原生javascript封装的函数

热门文章

  1. nginx展示文件目录
  2. 创建 Smarty 对象
  3. C# walls
  4. 【Python】学习笔记七:函数
  5. 一款基于jQuery Ajax的等待效果
  6. ACM ICPC 2011-2012 Northeastern European Regional Contest(NEERC)G GCD Guessing Game
  7. springBoot+springSecurity 数据库动态管理用户、角色、权限(二)
  8. 使用Map接收返回数据库的数据
  9. java 8 jdk1.8 新特性
  10. Python locals() 的陷阱