利用多态,简易实现电脑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 ...
随机推荐
- JAVA对象序列化和反序列化学习
JAVA序列化就是将JAVA对象转化为字节序列的过程,而JAVA反序列化就是将字节序列转化为JAVA对象的过程. 这一过程是通过JAVA虚拟机独立完成,所以一个对象序列化后可以在任意时间和任意机器上反 ...
- 记录一次 Linux crontab 执行django 脚本 失败 的经历和解决办法
目的是想通过定时任务来执行一次数据统计,本来可以用celery来做,但是想着这个项目整个就没用到异步的地方,所以决定用crontab来做.之前做过数据库的热备份,想来用该没啥问题,但是现实打脸啪啪响. ...
- fastjson合并json数组中相同的某个元素
/** * @param array JSON数组 * @param array 需合并后的某个元素名 */ private static JSONArray mgreArray(JSONArray ...
- Vue.js 技术揭秘学习 (1) new Vue 发生了什么
Vue 初始化主要就干了几件事情,合并配置,初始化生命周期,初始化事件中心,初始化渲染,初始化 data.props.computed.watcher 等等.
- CF527E Data Center Drama
链接CF527E Data Center Drama 题目大意:给你一个无向图,要求加最少的边,然后给这些无向图的边定向,使得每一个点的出入度都是偶数. \(n<=10^5,n\leq 2*10 ...
- 三条路线告诉你如何掌握Spring IoC容器的核心原理
原文链接:https://blog.csdn.net/bntx2jsqfehy7/article/details/78977178
- flask之视图函数从前端接收数据的方法
一:从前端接收查询字符串 query-string 注意:get和post都可以在url后面添加查询字符串?a=1&b=2 测试工具:postman 1:get方式接收 视图函数 from ...
- flask之路径与函数的映射
一:运行报错 OSError: [Errno 98] Address already in use:5000端口可能被占 lsof -i:端口号 查看端口被那个进程使用,结果是python3.5 k ...
- docker中pull镜像,报错 pull access denied for ubantu, repository does not exist or may require 'docker login'
报错说明:拒绝获取ubantu, 仓库不存在或者需要登录docker 1.先尝试注册docker 2.在拉镜像前,先登录docker, 命令:docker login 3.然后执行 docker ...
- root登录
,编辑/etc/lightdm/lightdm.conf: gedit /etc/lightdm/lightdm.conf [Seat:*] autologin-guest=false autolog ...