Java的编程之旅32——继承与多态的联合使用

模拟USB设备接入电脑

1.首先建立一个名为“USB”的抽象类

public abstract class USB {public abstract void On();public abstract void Off();
}

这是一个抽象类USB,表示一个USB设备。 该类有两个抽象方法On()和Off(),分别表示打开和关闭USB设备。 由于USB是一个抽象类,不能直接实例化,需要通过继承该类来实现具体的USB设备。子类需要实现On()和Off()方法,来实现具体的打开和关闭USB设备的操作。

2.创建“Keyboard”和“Mouse”类继承“USB”类

public class Keyboard extends USB{@Overridepublic void On() {System.out.println("键盘已连接...");}@Overridepublic void Off() {System.out.println("键盘已断开...");}void Inputting(){System.out.println("键盘正在输入...");}
}

这是一个名为Keyboard的类,它继承了USB抽象类。 Keyboard类重写了父类USB中的On()和Off()方法,并实现了一个名为Inputting()的方法。 在Keyboard类中,当调用On()方法时,会打印出"键盘已连接..."的消息;当调用Off()方法时,会打印出"键盘已断开..."的消息。 此外,Keyboard类还定义了一个Inputting()方法,用于表示键盘正在输入。 因此,Keyboard类代表了一个键盘设备,具有连接、断开和输入的功能。

public class Mouse extends USB{@Overridepublic void On() {System.out.println("鼠标已连接...");}@Overridepublic void Off() {System.out.println("鼠标已断开...");}void LeftClick(){System.out.println("鼠标左键已点击...");}void RightClick(){System.out.println("鼠标右键已点击...");}}

这是一个名为Mouse的类,它继承了USB抽象类。 Mouse类重写了父类USB中的On()和Off()方法,并实现了两个额外的方法:LeftClick()和RightClick()。 在Mouse类中,当调用On()方法时,会打印出"鼠标已连接..."的消息;当调用Off()方法时,会打印出"鼠标已断开..."的消息。 此外,Mouse类还定义了两个点击方法:LeftClick()表示鼠标左键点击,RightClick()表示鼠标右键点击。 因此,Mouse类代表了一个鼠标设备,具有连接、断开和点击的功能。

3.创建“Computer”类

public class Computer {void On(){System.out.println("电脑已开机...");}void Off(){System.out.println("电脑已关机...");}public void useDevice(USB dev){dev.On();if(dev instanceof Keyboard){((Keyboard)dev).Inputting();}else if(dev instanceof Mouse) {((Mouse) dev).LeftClick();((Mouse) dev).RightClick();}dev.Off();}
}

这是一个名为Computer的类,它表示一台电脑。 Computer类有两个方法:On()和Off(),表示电脑的开机和关机操作。 Computer类还有一个useDevice方法,用来使用USB设备。 在useDevice方法中,首先调用了USB设备的On()方法,表示连接设备。 然后使用了类型检查和类型转换的机制,判断传入的USB设备是Keyboard还是Mouse。 如果是Keyboard设备,则调用Keyboard类独有的Inputting()方法,表示键盘正在输入。 如果是Mouse设备,则调用Mouse类独有的LeftClick()和RightClick()方法,表示鼠标左键和右键点击。 最后,调用USB设备的Off()方法,表示断开设备。 通过这样的设计,Computer类实现了对USB设备的使用,并根据不同的设备类型执行不同的操作。

4.主方法

public class Run {public static void main(String[] args) {Computer computer = new Computer();computer.On();computer.useDevice(new Keyboard());computer.useDevice(new Mouse());computer.Off();}
}

这是一个名为Run的类,其中包含了主方法main。 在主方法中,首先创建了一个Computer对象computer。 然后调用了computer的On()方法,表示电脑已经开机。 接着使用了computer的useDevice方法,传入了一个Keyboard对象,表示连接了一个键盘设备。 在useDevice方法中,会先调用键盘的On()方法,然后执行键盘的Inputting()方法,表示键盘正在输入, 最后调用键盘的Off()方法,表示断开键盘设备。 接下来又使用了computer的useDevice方法,传入了一个Mouse对象,表示连接了一个鼠标设备。 在useDevice方法中,会先调用鼠标的On()方法,然后执行鼠标的LeftClick()和RightClick()方法,表示鼠标进行了左键和右键点击操作, 最后调用鼠标的Off()方法,表示断开鼠标设备。 最后,调用了computer的Off()方法,表示电脑已经关机。 通过这样的设计,Run类展示了如何使用Computer类来操作USB设备,并打印出相应的连接和断开信息。

运行结果

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/499593.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

荣获国家高新技术企业认证,苹芯科技领航AI芯片产业发展

北京苹芯科技有限公司(以下简称“苹芯科技”)凭借在存算一体芯片领域的卓越表现,荣获国家高新技术企业认证。这一荣誉不仅是对苹芯科技多年来在科技创新、产品研发等方面所取得成果的肯定,更是对其未来发展潜力的认可。 苹芯科技…

XSS中级漏洞(靶场)

目录 一、环境 二、正式开始闯关 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x0B 0x0C 0x0D 0x0E ​ 0x0F 0x10 0x11 0x12 一、环境 在线环境(gethub上面的) alert(1) 二、正式开始闯关 0x01 源码: 思路:闭…

Vue.js+SpringBoot开发电子元器件管理系统

目录 一、摘要1.1 项目简介1.2 项目录屏 二、研究内容三、界面展示3.1 登录&注册&主页3.2 元器件单位模块3.3 元器件仓库模块3.4 元器件供应商模块3.5 元器件品类模块3.6 元器件明细模块3.7 元器件类型模块3.8 元器件采购模块3.9 元器件领用模块3.10 系统基础模块 四、…

网络工程师笔记3

IP地址类型 A类 255.0.0.0B类 255.255.0.0C类 255.255.255.0D类 E类 子网掩码:从左到右连续的确定网络位 2-4-8-16-32-64-128-256 128 : 1000 0000 64 : 0100 0000 32 : 0010 0000 16 : 0001 0000 8 &am…

Ubuntu整系统迁移到另一个硬盘中

以ubuntu20.04为例,之前使用的是1T的移动硬盘,每次进入后性能不太稳定,所以最近买了块1T的固态硬盘给我的笔记本装上了,但是如果重新进行各种软件安装及环境配置就太麻烦了,所以采用了系统迁移 1.首先制作一个Ubuntu系…

hcip交换

交换机功能 无限的传输距离——识别,重写电信号(帧)保证信息完整彻底解决了冲突二层单播——MAC地址表提高端口密度 单播地址:MAC地址第一个字节第8位为0 组播地址:MAC地址第一个字节第8位为1 广播地址:全1…

面试数据库篇(mysql)- 11主从同步

原理 MySQL主从复制的核心就是二进制日志 二进制日志(BINLOG)记录了所有的 DDL(数据定义语言)语句和 DML(数据操纵语言)语句,但不包括数据查询(SELECT、SHOW)语句。 复…

走进中国电车领跑企业“NI蔚来”丨共谋商业,共话ESG

期盼与热望将冬季的寒冷拂去,复旦大学-华盛顿大学EMBA项目迎来了一位新朋友——美国圣路易斯华盛顿大学奥林商学院的新任院长Michael Mazzeo教授。Mazzeo院长在上海进行了为期3天的访问。这里是 Mazzeo院长上任后国际访问交流之旅的第一站。      漫步校园&…

工作流软件平台服务商教您如何提高办公效率

想要提高办公效率,是很多企业的发展梦想。作为工作流软件平台服务商,流辰信息一直在低代码技术平台领域深耕细作,围绕客户需求和市场发展坚持自主创新,不断超越自己,成功向市场推出多款优秀的低代码技术平台产品&#…

c#打印BarTend标签提示:具名数据源没有cuckoo*具名数据(解决)

c#打印BarTend标签提示:具名数据源没有cuckoo*具名数据(解决) 今天咕咕更新打印模板的时候遇到的问题,就是在模版中配置了字段名,但是启动c#应用,后端发送json数据打印的时候c#报错提示,没有在…

【C语言基础】:深入理解指针(一)

文章目录 一、内存和地址1. 内存2. 如何理解编址 二、指针变量和地址2.1 取地址操作符(&)2.2 指针变量和解引用操作符(*)2.2.1 指针变量2.2.2 如何拆解指针变量2.2.3 解引用操作符 2.3 指针变量的大小 三、指针变量类型的意义3.1 指针的解引用3.2 指针 - 整数3.3 void*指针…

[MYSQL数据库]--mysql的基础知识

前言 作者:小蜗牛向前冲 名言:我可以接受失败,但我不能接受放弃 如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、数据库…