【零基础学Java】—笔记本USB接口案例(二十八)

一、笔记本电脑

笔记本电脑(laptop)通常具备使用USB设备的功能,在生产时,笔记本都预留了可以插入USB设备的USB接口,但具体什么是USB设备,笔记本厂商并不关心,只要符合USB规格的设备都可以。

二、案例分析

进行描述笔记本,实现笔记本不用USB鼠标,USB键盘

  • USB接口,包含打开设备的功能,关闭设备功能
  • 笔记本类,包含开机功能,关机功能,使用USB设备的功能
  • 鼠标类,要实现USB接口,并具备点击的方法
  • 键盘类,要实现USB接口,具备敲击的功能

三、案例实现

public interface USB {public abstract void open();//打开设备public  abstract void close();// 关闭设备
}
public class Computer {public void powerOn(){System.out.println("笔记本电脑开机");}public void powerOff(){System.out.println("笔记本电脑关机");}// 使用USB设备的方法  使用接口作为方法的参数public void usedevice(USB usb){usb.open();//打开设备if(usb instanceof  Mouse){//一定要先判断Mouse mouse=(Mouse) usb;//向下转型mouse.click();}else if(usb instanceof  Keyboard){//先判断Keyboard keyboard=(Keyboard) usb;// 向下转型keyboard.type();}usb.close();//关闭设备}}
//鼠标就是一种USB设备
public class Mouse implements USB {@Overridepublic void open() {System.out.println("打开鼠标");}@Overridepublic void close() {System.out.println("关闭鼠标");}public void click() {System.out.println("点击鼠标");}
}
//键盘就是一种USB设备
public class Keyboard implements USB {@Overridepublic void open() {System.out.println("打开键盘");}@Overridepublic void close() {System.out.println("关闭键盘");}public void type(){System.out.println("键盘输入");}
}
public class DemoMain {public static void main(String[] args) {//首先创建一个笔记本电脑Computer computer=new Computer();computer.powerOn();//首先进行向上转型USB usbMouse=new Mouse();//参数是USB类型,我正好传递进去的就是USB鼠标computer.usedevice(usbMouse);//  创建一个USB键盘Keyboard keyboard=new Keyboard();//方法参数是USB类型 传递进去的是实现类对象computer.usedevice(keyboard);computer.powerOff();}}

【零基础学Java】—笔记本USB接口案例(二十八)相关推荐

  1. 【零基础学Java】—LinkedList集合(四十)

    [零基础学Java]-LinkedList集合(四十) java.util.linkedList集合implements list接口 linkedList 集合的特点: 底层是一个链表结构,查询慢, ...

  2. 【零基础学Java】—List集合(三十九)

    [零基础学Java]-List集合(三十九) java.util.list接口 extends Collection接口 list接口的特点: 1.有序的集合,存储元素和取出元素的顺序是一致的(存储1 ...

  3. 【零基础学Java】—Socket类(五十五)

    [零基础学Java]-Socket类(五十五) Socket类:该类实现客户端套接字,套接字是指两台设备之间通讯的端点. 在Java中,提供了两个类用于实现TCP通信程序 客户端:java.net.S ...

  4. 【零基础学Java】—TCP通信(五十四)

    [零基础学Java]-TCP通信(五十四) TCP通信:面向连接的通信,客户端和服务器端必须经过三次握手,建立逻辑连接,才能通信(安全). 通信的步骤: 服务器端先启动 服务器端不会主动的请求客户端, ...

  5. 【零基础学Java】—throw关键字(四十六)

    [零基础学Java]-throw关键字(四十六) 一.throw关键字 public class demo {public static void main(String[] args) {//创建i ...

  6. 【零基础学Java】—System类(三十五)

    [零基础学Java]-System类(三十五) java.lang.System 类中提供了大量的静态方法,可以获取与系统相关的信息或系统级操作 在System类的API文档中,常用的方法有: pub ...

  7. 【零基础学Java】—Calendar类(三十四)

    [零基础学Java]-Calendar类(三十四) java.util.Calendar日历类 Calendar类是一个抽象类,里面提供了很多操作日历字段的方法 Calendar类无法直接创建对象,里 ...

  8. 【零基础学Java】—static关键字概述(十六)

    [零基础学Java]-static关键字概述(十六) 一.static关键字 二.static关键字修饰成员变量 /*** @author :CaiCai* @date : 2022/4/8 11:1 ...

  9. 【零基础学Java】—对象的内存图(八)

    [零基础学Java]-对象的内存图(八) 一.一个对象的内存图 二.两个对象的内存图 三.使用对象类型作为方法的参数 public class PhoneParam {public static vo ...

  10. 【零基础学Java】—继承的概述(十九)

    [零基础学Java]-]继承的概述(十九) 一.面向对象的三大特征 面向对象的三大特征:封装性,继承性,多态性 继承是多态的前提,如果没有继承,就没有多态 继承解决的主要问题就是:共性抽取 继承关系的 ...

最新文章

  1. 卷积神经网络(CNN)实现CIFAR100类别分类
  2. 原创,自己做的一个简单实用的提示小插件,兼容性很好,基本上都兼容!
  3. POJ1269:Intersecting Lines(判断两条直线的关系)
  4. 机器学习笔记——皮尔逊相关系数
  5. Java高并发之锁优化
  6. LR逻辑斯蒂回归 — 机器学习面试
  7. SLAM数据集(1)
  8. python中while的用法_Python—while循环,内涵五种九九乘法表
  9. 学习: 导航器添加修饰符
  10. 用c语言编写成绩单由高到低,C语言程序设计实验.doc
  11. RTP载荷H264视频流
  12. 数字图像处理课后习题汇总
  13. java c3p0 jar包_c3p0 jar包下载-c3p0-0.9.1.2.jar包下载 --pc6下载站
  14. 用友NC单据模板公式
  15. 只需45秒,Python 给故宫画一组手绘图!
  16. 单应性矩阵的理解及求解
  17. zotero自定义导出参考文献bib格式
  18. hive client 登录报权限不足问题/tmp/hive on HDFS should be writable. Current permissions are: rwx------
  19. 通过编写游戏程序的视角去编写字符驱动--设备树-百问imx6ull-pro
  20. 台式机+无线路由 配置 wifi热点

热门文章

  1. P3175 [HAOI2015]按位或
  2. PUT上传POC--Put2Poc.py
  3. canvas一些属性
  4. 华为hg-526拨号加路由破解简介
  5. 看淘宝UED招聘题,思索FSE技能定位(附参考答案)
  6. 用python求期望_用Python计算明日方舟2021龙门幸运墙期望
  7. X86汇编语言从实模式到保护模式20:平坦模型
  8. 深入理解Linux内核01:内存寻址
  9. 在VS2013以及Linux系统中利用SVN自动更新版本号
  10. C++ 调试配置的项目设置