利用多态,简易实现电脑usb连接设备案例
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连接设备案例的更多相关文章
- C++练习案例1.计算机类(利用多态实现)
c++简单计算机类 简介 大家好,这里是天天like的博客,这是我发的第一篇随笔,用来记录我的学习日程,大家可以相互学习,多多交流,感谢 今天我要记录的随笔是在学习c++多态的知识点练习改进的一个案例 ...
- C++ //多态案例 -计算器类(普通写法 和 多态写法) //利用多态实现计算器 //多态好处: //1.组织结构清晰 //2.可读性强 //3.对于前期和后期扩展以及维护性高
1 //多态案例 -计算器类(普通写法 和 多态写法) 2 3 #include <iostream> 4 #include <string> 5 using namespac ...
- Kali Linux Web 渗透测试视频教—第二十课-利用kali linux光盘或者usb启动盘破解windows密码
Kali Linux Web 渗透测试视频教—第二十课-利用kali linux光盘或者usb启动盘破解windows密码 文/玄魂 目录 Kali Linux Web 渗透测试视频教—第二十课-利用 ...
- 我设计的电脑usb红外遥控键盘原理图
我设计的电脑usb红外遥控键盘,orcad原理图备份如下:
- 无法开机 如果您的手机黑屏无法开机,可以按照以下方式操作尝试: 如果是,使用原装充电器或使用弱电流方式充电(例如使用电脑USB接口充电)充电15-30分钟后尝试重新开机;注意:电量过低引起的无法开机,刚插入充电器时可能不亮屏但呼吸灯闪烁状态。
https://www.mi.com/service/support/startup 无法开机 如果您的手机黑屏无法开机,可以按照以下方式操作尝试: 技术支持 如何刷机 无法开机 手机自动关机.重启 ...
- USB接口案例——多态和转型
其中,为传递和使用的匿名对象,即创建了对象,但是没有引用类和对象名来接收: 电脑类中的操作usb的成员方法中,要向下转型,毛主席讲的具体问题具体分析,不同的设备有不同的操作:
- 自制电脑usb红外遥控键盘
2010-08-08 19:20:00 看个ppt,还要一直按键盘或鼠标,能不能拿个遥控器控制一下. 动动脑,自己做一个吧. 电路分2部分,遥控器为发射部分,单片机为解码部分并且包含usb键盘功能. ...
- 笔记本Usb接口案例
笔记本电脑通常具备使用USB设备的功能.在生产的时候,笔记本都预留了可以插入USB设备的USB接口.但具体是什么USB设备,笔记本厂商并不关心,只要符合USB规格的设备都可以. 定义USB接口,具备最 ...
- 如何禁用电脑USB接口
方法一,BIOS设置法 重新启动计算机,在开机过程中,点击键盘上的“Delete”键,进入BIOS设置界面,选择“Integrated Peripherals”选项,展开后将“USB 1.1 Cont ...
随机推荐
- VINS 估计器之外参初始化
为何初始化外参 当外参完全不知道的时候,VINS也可以在线对其进行估计(rotation),先在processImage内进行初步估计,然后在后续优化时,会在optimize函数中再次优化. 如何初始 ...
- spark cli
Spark SQL CLI Spark1.1增加了Spark SQL CLI和ThriftServer SparkSQL CLI配置 1.创建并配置hive-site.xml 在运行Spark SQL ...
- 实现斐波那契数列之es5、es6
es5实现斐波拉契函数数列: <script type="text/javascript"> function fibonacci(n) { var one = 1; ...
- Nginx针对前端静态资源的缓存处理
当用户上报一个线上的bug后,开发者修改前端代码的bug上新后,用户反映问题依旧存在的问题...这种情况是不是曾经遇到过,这个问题跟浏览器的缓存机制有很大关系(强制缓存和协商缓存,这里我就不介绍具体的 ...
- 关于post xml的请求和响应
关于post的请求作为开发者应该常用到,post请求的数据包含了参数和data,post参数相对比较容易理解,比如我们一个form提交,其实就是调用后台方法的,发送相关参数,这里我单独说一下关于pos ...
- 2019-9-2-visual-studio-2015-warning-MSB3246
title author date CreateTime categories visual studio 2015 warning MSB3246 lindexi 2019-09-02 12:57: ...
- OGG复制进程延迟不断增长
1.注意通过进程查找sql_id时,进程号要查询两次 2.杀进程的连接 https://www.cnblogs.com/kerrycode/p/4034231.html 参考资料 1.https:// ...
- 2018-11-01-weekly
Algorithm 107. 二叉树的层次遍历 II What 给定一个二叉树,返回其节点值自底向上的层次遍历. (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历).例如:给定二叉树 [3,9 ...
- 文本框的pattern属性
代码实例: test.html <!DOCTYPE html><html lang="en"><head> <meta charset=& ...
- W3C 事件切换 颜色变化
颜色变化代码: HTML: <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...