Java面向对象之USB接口实例
2024-10-19 13:35:21
一、需求:
1.在电脑上设置一个USB接口。
2.电脑运行时,将鼠标连接到接口上,鼠标可以使用自己的功能。
3.电脑运行时,将键盘连接到接口上,键盘可以使用自己的功能。
(使用接口的作用:减低鼠标、键盘等外围设备和笔记本电脑的耦合性。还可以增加电脑的扩展性。)
二、实例代码:
//进行设计,定义USB接口规则
interface USB
{
/**
运行设备
*/
public void open();
} //描述电脑
class computer
{
/**
电脑运行
*/
public void run()
{
System.out.println("computer ......");
} /**
使用符合规则的外围设备
*/
public void useUSB(USB usb) //定义一个接口类型的引用。
{
if(usb != null);
{
usb.open();
}
}
} class Mouse
{
public void run()
{
System.out.println("Mouse ......");
}
} class Keyboard
{
public void run()
{
System.out.println("Keyboard ......");
}
} /**
连接了符合USB接口的鼠标。
*/
class MouseUSB extends Mouse implements USB
{
public void open()
{
System.out.println("Mouse USB open ......");
}
} /**
连接了符合USB接口的键盘。
*/
class KeyboardUSB extends Keyboard implements USB
{
public void open()
{
System.out.println("Keyboard USB open ......");
}
} /**
连接了符合USB接口的东西。
*/
class ThingUSB implements USB
{
public void open()
{
System.out.println("open ......");
}
} class USBTest
{
public static void main(String[] arge)
{
/**
电脑c开始运行
*/
computer c = new computer();
c.run(); /**
将鼠标m连接到接口useUSB上,鼠标可以使用自己的功能
*/
MouseUSB m = new MouseUSB();
c.useUSB(m);
m.run(); /**
将键盘k连接到接口useUSB上,键盘可以使用自己的功能
*/
KeyboardUSB k = new KeyboardUSB();
c.useUSB(k);
k.run(); /**
连接接口useUSB的东西t,可以使用
*/
USB t = new ThingUSB();//多态性。能连接接口就可以使用。
c.useUSB(t);
}
}
三、代码运行:
最新文章
- C语言中的static 详细分析
- 【转】Linux下怎样检查、如何查看某软件包是否已经安装?
- python3抓取到的拉勾数据统计
- HDU 1394Minimum Inversion Number 数状数组 逆序对数量和
- pch和info.plist初探
- HTTP协议——学习资料小结
- Android之记账本
- 自己利用jQuery实现的win8图标浮动更新
- 关于jQuery获取checkbox状态的问题
- C#入门经典中的SelectionFont属性为null
- JavaScript获取html元素的实际宽度和高度
- Microsoft Visual C++ Compiler for Python 2.7真正下载地址
- MySQL权限授权认证详解
- Keepalived详解(二):Keepalived安装与配置【转】
- libssl.so.10: cannot open shared object file: No such file or directory
- 编译openwrt时报错:fstools-2018-01-02-11efbf3b/libfstools/overlay.c: At top level: cc1: error: unrecognized command line option '-Wno-format-truncation' [-Werror]
- Spring Boot Actuator RCE
- python函数嵌套的实用技术
- Linux内核程序的编译:模块化编译
- 转:win32下的堆管理系统
热门文章
- 解决webpack环境变量NODE_ENV跨平台兼容性问题
- 摄影之HDR
- hadoop 小知识点
- iOS坑爹的could not find any information for class named xxx
- 辽宁工程技术大学校园网(深澜) 叠加小水管提速,多wan叠加负载均衡
- eclipse egit(分支管理 上)
- mongo 修改器 $inc/$set/$unset/$pop/$push/$pull/$addToSet
- springboot @Value 类中读取配置文件 .properties null 原因和解决方案
- SqlServer——神奇代码1之Update
- Mr_matcher的细节2