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. Dynamic Mapping和常见字段类型

    原文:Dynamic Mapping和常见字段类型 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn. ...

  2. C# EF优化

    原文:https://www.cnblogs.com/wangyuliang/p/10338902.html   https://www.cnblogs.com/simadi/p/6879366.ht ...

  3. Maya多版本下载与激活方法

    目录 1. 安装激活说明 1. 安装激活说明 Maya2019:https://www.cnblogs.com/coco56/p/11425559.html Maya2017:https://www. ...

  4. Asp.Net 保存Session的三种方式

    一.默认方式,保存在IIS进程中保存在IIS进程中是指把Session数据保存在IIS的运行的进程中,也就是inetinfo.exe这个进程中,这也是默认的Session的存方式,也是最常用的. 这种 ...

  5. 一、touch.js

    一.touch.js 1.引用链接: <script src="https://cdn.bootcss.com/touchjs/0.2.14/touch.min.js"> ...

  6. $mona$要成为高端玩家

    \(mona\)要成为高端玩家! 好在撑过了联赛,接下来要向高端玩家冲击啦! 新时期当然要有新的学习规划啦! 最近的更新(有什么就在这里说啦) 随便更更. \(FFT\)刷着打算先看看生成函数. 感觉 ...

  7. 阿里云Kubernetes服务 - Service Broker快速入门指南

    4月底阿里云容器服务上线了基于Kubernetes集群的服务目录功能.阿里云的容器的服务目录遵循Open Service Broker API标准,提供了一系列的服务代理组件,实现了对主流开源服务如M ...

  8. [CF1182F]Maximum Sine

    题意:\(f(x) = \text{abs}(\text{sin}(\frac{p}{q} \pi x))\),给定\(a,b,p,q\),求\(x\in[a,b]\)最大的\(f(x)\). 题解: ...

  9. [CSP-S模拟测试]:Rectangle(模拟+树状数组)

    题目描述 平面上有$n$个点,第$i$个点的坐标为$X_i,Y_i$.对于其中的一个非空点集$S$,定义$f(S)$为一个最小矩形,满足:$\bullet$覆盖$S$中所有的点(在边界上也算覆盖):$ ...

  10. wangjunkai

    <!Doctype html><html lang="en"> <head> <meta http-equiv="Content ...