package cn.learn.Practice03;

public interface UsbInterface {
void open(); //打开usb
void close(); //关闭usb
}
package cn.learn.Practice03;

public class Keyboard implements UsbInterface {
@Override
public void open() {
System.out.println("打开键盘连接");
} @Override
public void close() {
System.out.println("关闭键盘");
}
public void type(){
System.out.println("键盘输入文字");
}
}
package cn.learn.Practice03;

public class Mouse implements UsbInterface {
@Override
public void open() {
System.out.println("打开鼠标连接");
} @Override
public void close() {
System.out.println("关闭鼠标");
} public void click(){
System.out.println("鼠标点击");
}
}
package cn.learn.Practice03;

public class LapTop {

    public void powerOn(){
System.out.println("笔记本开机");
}
public void powerOff(){
System.out.println("笔记本关机");
} //电脑使用usb,接口作为参数列表
public void useDevice(UsbInterface usb){
usb.open(); //实际调用的是鼠标或者键盘的open方法 //如果传入的是Mouse,则将参数向下转型,进行点击
if(usb instanceof Mouse){
//参数转型
Mouse m = (Mouse) usb;
//进行点击
m.click();
}
//如果传入的是Keyboard,则将参数向下转型,进行点击
if(usb instanceof Keyboard){
//参数转型
Keyboard k = (Keyboard) usb;
//进行打字
k.type();
} usb.close(); //关闭设备
}
}
 package cn.learn.Practice03;

 public class Enter {
public static void main(String[] args) {
//首先创建一个笔记本电脑
LapTop one = new LapTop();
one.powerOn(); //准备一个鼠标
Mouse mouse = new Mouse(); //mouse.open(); 接口也有该方法,重名,编译通过,运行在右子类优先
/* ??正确写法,看似传入的是一个对象,实际是实现类,自动向上转型
eg:int a=10;method(a);参数列表是double
不恰当的可以把Mouse 看作 int
甚至可以这么写one.useDevice(new mouse()); -匿名对象生成
自动转型为Mouse实现类,传递给useDevice(UsbInterface usb); */
//调用电脑使用鼠标
one.useDevice(mouse);//触发click方法 //另一种写法,准备一个键盘,向上转型
UsbInterface keyboard= new Keyboard();
//keyboard.open(); 接口也有该方法,重名,编译通过,运行在右子类优先
//((Keyboard) keyboard).type(); 不能使用自己的单独方法与上面对比
//调用电脑使用键盘
one.useDevice(keyboard); one.powerOff();
} }

利用多态,简易实现电脑usb连接设备案例的更多相关文章

  1. C++练习案例1.计算机类(利用多态实现)

    c++简单计算机类 简介 大家好,这里是天天like的博客,这是我发的第一篇随笔,用来记录我的学习日程,大家可以相互学习,多多交流,感谢 今天我要记录的随笔是在学习c++多态的知识点练习改进的一个案例 ...

  2. C++ //多态案例 -计算器类(普通写法 和 多态写法) //利用多态实现计算器 //多态好处: //1.组织结构清晰 //2.可读性强 //3.对于前期和后期扩展以及维护性高

    1 //多态案例 -计算器类(普通写法 和 多态写法) 2 3 #include <iostream> 4 #include <string> 5 using namespac ...

  3. Kali Linux Web 渗透测试视频教—第二十课-利用kali linux光盘或者usb启动盘破解windows密码

    Kali Linux Web 渗透测试视频教—第二十课-利用kali linux光盘或者usb启动盘破解windows密码 文/玄魂 目录 Kali Linux Web 渗透测试视频教—第二十课-利用 ...

  4. 我设计的电脑usb红外遥控键盘原理图

    我设计的电脑usb红外遥控键盘,orcad原理图备份如下:

  5. 无法开机 如果您的手机黑屏无法开机,可以按照以下方式操作尝试: 如果是,使用原装充电器或使用弱电流方式充电(例如使用电脑USB接口充电)充电15-30分钟后尝试重新开机;注意:电量过低引起的无法开机,刚插入充电器时可能不亮屏但呼吸灯闪烁状态。

    https://www.mi.com/service/support/startup 无法开机 如果您的手机黑屏无法开机,可以按照以下方式操作尝试: 技术支持 如何刷机 无法开机 手机自动关机.重启 ...

  6. USB接口案例——多态和转型

    其中,为传递和使用的匿名对象,即创建了对象,但是没有引用类和对象名来接收: 电脑类中的操作usb的成员方法中,要向下转型,毛主席讲的具体问题具体分析,不同的设备有不同的操作:

  7. 自制电脑usb红外遥控键盘

    2010-08-08 19:20:00 看个ppt,还要一直按键盘或鼠标,能不能拿个遥控器控制一下. 动动脑,自己做一个吧. 电路分2部分,遥控器为发射部分,单片机为解码部分并且包含usb键盘功能. ...

  8. 笔记本Usb接口案例

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

  9. 如何禁用电脑USB接口

    方法一,BIOS设置法 重新启动计算机,在开机过程中,点击键盘上的“Delete”键,进入BIOS设置界面,选择“Integrated Peripherals”选项,展开后将“USB 1.1 Cont ...

随机推荐

  1. LeetCode106. 从中序与后序遍历序列构造二叉树

    106. 从中序与后序遍历序列构造二叉树 描述 根据一棵树的中序遍历与后序遍历构造二叉树. 注意: 你可以假设树中没有重复的元素. 示例 例如,给出 中序遍历 inorder = [9,3,15,20 ...

  2. django信号相关

    Django中提供了“信号调度”,用于在框架执行操作时解耦.通俗来讲,就是一些动作发生的时候,信号允许特定的发送者去提醒一些接受者. 1.Django内置信号 Model signals pre_in ...

  3. C#学习——控件

    Windows应用程序控件的基类是位于System.Windows.Forms命名空间的Control类. Control类定义了控件类的共同属性.方法和事件,其他的控件类都直接或间接到派生自这个类. ...

  4. 【推荐系统】知乎live入门2.细节补充

    参考链接 [推荐系统]知乎live入门 目录 1. 综述 2. 召回 3. 用户画像与标签 4. 特征工程 5. 点击率预估 6. 评估 7. 数据标注 8. 推荐 ================= ...

  5. 谈谈CS英文论文写作

    作为一个CS的研究生,发篇文章是你毕业的必要条件.现如今,学校对于文章的要求也越来越高,一般来说,还是国外的期刊或者会议更加受到认可,这样对于毕业也有好处.因此,以我自己的感受来说,论文的写作以及表达 ...

  6. ES6——generator

    generator 生成器函数 普通函数,一路到底 generator函数,中间可以停,到哪停呢,用 yield 配合,交出执行权 yield 有 放弃.退让.退位的意思 需要调用next()方法启动 ...

  7. 数据写入到Excel,模板样式复杂

    先整理好Excel模板,如: 接下来在程序获取上面整理好的Excel模板并替换关键字就可以了public ActionResult SummaryStatistics() public ActionR ...

  8. openstack stein部署手册 3. keystone

    # 建立数据库用户及权限 create database keystone; grant all privileges on keystone.* to keystone@'localhost' id ...

  9. 2、Jmeter测试

    一.测试流程 1.添加本次测试计划 (右键-->添加-->Threads(Users)-->线程组) 2.设置线程数 (所谓线程数就是并发用户数) 3.在线程组内添加请求(右键--& ...

  10. React笔记01——React开发环境准备

    1 React简介 2013年由Facebook推出,代码开源,函数式编程.目前使用人数最多的前端框架.健全的文档与完善的社区. 官网:reactjs.org 阅读文档:官网中的Docs React ...