第37章 接口多态的综合案例

作者:张子默

一、笔记本电脑

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

定义USB接口,具备最基本的开启功能和关闭功能。鼠标和键盘要想能在电脑上使用,那么鼠标和键盘也必须遵守USB规范,实现USB接口,否则鼠标和键盘生产出来也无法使用。

二、案例分析

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

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

三、案例实现

定义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();}
}

四、实例

package com.zzm.day10.demo07;public interface USB {public abstract void open(); // 打开设备public abstract void close(); // 关闭设备}package com.zzm.day10.demo07;/*** 用途:* 时间:2021/6/23 11:16* 创建人:张子默*/// 鼠标就是一个USB设备
public class Mouse implements USB {@Overridepublic void open() {System.out.println("打开鼠标");}@Overridepublic void close() {System.out.println("关闭鼠标");}public void click() {System.out.println("鼠标点击");}
}package com.zzm.day10.demo07;/*** 用途:* 时间:2021/6/23 11:16* 创建人:张子默*/// 键盘就是一个USB设备
public class Keyboard implements USB {@Overridepublic void open() {System.out.println("打开键盘");}@Overridepublic void close() {System.out.println("关闭键盘");}public void type() {System.out.println("键盘输入");}
}package com.zzm.day10.demo07;/*** 用途:* 时间:2021/6/22 22:03* 创建人:张子默*/
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(); // 关闭设备}
}package com.zzm.day10.demo07;/*** 用途:* 时间:2021/6/23 11:18* 创建人:张子默*/
public class DemoMain {public static void main(String[] args) {// 首先创建一个笔记本电脑Computer computer = new Computer();computer.powerOn();// 准备一个鼠标,供电脑使用// Mouse mouse = new Mouse();// 首先进行向上转型//USB usb = (USB) mouse;USB usbMouse = new Mouse();// 参数是USB类型,我正好传递进去的就是USB鼠标computer.useDevice(usbMouse);// 创建一个USB键盘Keyboard keyboard = new Keyboard(); // 没有使用多态写法// 方法参数是USB类型,传递进去的是实现类对象computer.useDevice(keyboard); // 正确写法!也发生了向上转型computer.useDevice(new Keyboard()); // 也是正确写法computer.powerOff();System.out.println("===============");method(10.0); // 正确写法,double --> doublemethod(20); // 正确写法,int --> doubleint a = 30;System.out.println(a); // 正确写法,int --> double}public static void method(double num) {System.out.println(num);}}

37_接口多态的综合案例相关推荐

  1. 接口多态的综合案例——笔记本电脑

    文章目录 1.1 笔记本电脑 1.2 案例分析 1.3 案例实现 1.1 笔记本电脑 笔记本电脑(laptop)通常具备使用USB设备的功能.在生产时,笔记本都预留了可以插入USB设备的USB接口, ...

  2. 包 权限修饰符 final 常量 枚举 抽象类 接口 多态 内部类 常用API 正则表达式 Lambda

    包 什么是包? 包是用来分门别类的管理各种不同类的,类似于文件夹.建包利于程序的管理和维护. 建包的语法格式:package 公司域名倒写.技术名称.报名建议全部英文小写,且具备意义. package ...

  3. Java基础加强重温_05:Iterator迭代器、增强for循环、集合综合案例-斗地主、数据结构(栈、队列、数组、链表、红黑树)、List接口、Set接口

    摘要: Java基础加强重温_05: Iterator迭代器(指针跟踪元素). 增强for循环(格式.底层). 集合综合案例-斗地主(代码规范抽取代码,集合元素打乱). 数据结构[栈(先进后出,子弹夹 ...

  4. 5.22 综合案例2.0-4G远程遥控车DEMO(2.2版本接口有更新)

    综合案例2.0-4G远程遥控车DEMO 简介 准备 硬件连接图 代码流程 1.物联网平台开发 2.设备端开发 调试 3.物联网应用开发 3.1新建'普通项目' 3.2关联产品和设备 3.3新建'移动应 ...

  5. 5.23 综合案例2.0-番茄时钟(2.2版本接口有更新)

    综合案例2.0-番茄时钟 简介 准备 硬件连接图 代码流程 功能实现 1.物联网平台开发 2.设备端开发 3.调试 简介 番茄工作法是一种可以有效管理时间的工具,在平时的工作学习中经常会被各种所谓的& ...

  6. 5.25 综合案例2.0-居家隔离监控系统(2.2版本接口有更新)

    综合案例2.0-居家隔离监控系统 简介 AJ-SR04M- T-X超声波测距模块 准备 硬件连接图 代码流程 功能实现 1.物联网平台开发 2.设备端开发 3.调试 4.创建钉钉机器人 5.IoT S ...

  7. 5.20 综合案例2.0-甲醛浓度检测系统(2.2版本接口有更新)

    综合案例2.0-甲醛浓度检测系统 简介 电化学甲醛模组 准备 硬件连接图 代码流程 1.物联网平台开发 2.设备端开发 调试 3.物联网应用开发 3.1新建'普通项目' 3.2关联设备 3.3创建we ...

  8. 5.16 综合案例2.0-久坐提醒系统(2.2版本接口有更新)

    综合案例2.0-久坐提醒系统 简介 准备 人体红外传感器 硬件连接图 代码流程 功能实现 1.物联网平台开发 2.设备端开发 3.调试 4.钉钉消息提醒 4.1添加钉钉机器人 4.2.IoT Stud ...

  9. Java基础-day08-static·static静态代码块·final 关键字·多态·汽车设计综合案例·异常

    day09 1.static 是java中的一个关键字 用于修饰成员(成员变量和成员) 1.static是一个关键字 2.static可以修饰成员变量和方法,被修饰的资源就是静态资源 3.静态资源优先 ...

  10. Java接口实现多态 -- 笔记本电脑综合实例

    前言 在开始分享之前,请大家思考三个问题 . 1,什么是多态? 2,多态有几种实现方式(除了接口还有什么可以实现多态,答案不唯一.) 3,多态的好处 答案:大家可以把自己的见解分享到下面评论里 下面以 ...

最新文章

  1. Java面试题:缓存三大问题及解决方案!
  2. docker 添加端口映射_Docker容器修改端口映射
  3. 程序员养发(老师付推荐)
  4. Java I/O流InputStream,OutputStream,Reader,Writer
  5. webapp 中为span元素赋值
  6. 现在mfc的现状如何_天玑云客:微信代运营现在什么现状?如何挑选合适的代运营公司?...
  7. Salt-Minion配置文件详解
  8. 列举ASP.NET 页面之间传递值的几种方式
  9. Understanding, Operating and Monitoring Apache Kafka
  10. cf鼠标宏数据大全_鼠标6个率?采样率、分辨率、回报率、轮询率、刷新率、采样频率...
  11. 针对中东石油能源工业控制系统的又一网军诞生
  12. 原创精美微信小程序UI界面——抖音版的“知乎”来啦
  13. python自动化测试-最常用的自动化测试框架
  14. 新浪邮箱服务器设置,免费的新浪邮箱设置outlook怎么设置?
  15. 我的编程经历与我所热爱的游戏服务端开发
  16. 认同和确定性矩阵(Ralph Stacey's Agreement and Certainty Matrix)-译
  17. 云端服务器的稳定方法,云端服务器的问题怎么解决
  18. hdu 2072 单词数(C语言)
  19. Java计算三角形的面积
  20. WordCount单词计数详解

热门文章

  1. 德哥PostgreSQL学习资料汇总(转)
  2. 用R语言预测美国移动股票价格
  3. 「微服务架构」编曲与编舞——让系统协同工作的不同模式
  4. Office如何通过VSTO进行WORD插件开发?
  5. 技巧92 重复上一次substitue命令
  6. python表格批量插图单元格xlwings\os\pillow教程,可不用20行代码敲定
  7. win10+ubuntu18.04双系统在NVIDIA GTX1050 笔记本上的安装纪实
  8. 麦库记事Android客户端(V1.4.3)评测
  9. 硬核实力,多方认可|云扩科技作为RPA核心厂商入选《2022中国RPA采购指南》
  10. 兰州市高中计算机会考成绩查询,2017年甘肃兰州会考成绩查询网址:http://jyj.lanzhou.gov.cn/...