接口是一种引用数据类型,是方法的集合。接口内部主要封装了方法。
使用 interface 关键字定义,会被编译成.class文件。
接口不能创建对象,但是其他类可以使用 implements 实现接口。其他接口也可以使用 extends 继承接口。
需求
电脑具备使用USB设备的功能。在生产时,厂商需要根据USB接口生产规范类生产,这样才能接入其他厂商生产的USB设备。
定义USB接口,具备最基本的open功能和close功能。鼠标和键盘要想能在电脑上使用,那么鼠标和键盘也必须遵守 USB规范,实现USB接口,否则鼠标和键盘的生产出来也无法使用。
分析
进行描述笔记本类,实现笔记本使用USB鼠标、USB键盘
• USB接口:包含开启功能、关闭功能
• 笔记本类:包含运行功能、关机功能、使用USB设备功能
• 鼠标类:要实现USB接口,并具备点击的方法
• 键盘类:要实现USB接口,具备敲击的方法
程序运行结果
代码
package com.junlong.laptop;
/**
* 笔记本类
* @Author: junlong.zhou
* @Date: 2021/6/25 14:19
* @Version 1.0
*/
public class Laptop {
// 开机
public void open() {
System.out.println("电脑已开机...");
}
// 关机
public void shoutDown() {
System.out.println("电脑已关机...");
}
// 使用USB设备
public void useUsb(Usb usb) {
// 判断是否有Usb设备
if (usb != null) {
// 启用usb设备
usb.open();
// 判断是否是鼠标
if (usb instanceof Mouse) {
// 鼠标点击
Mouse mouse = (Mouse) usb;
mouse.click();
}
// 判断是否是键盘
if (usb instanceof KeyBoard) {
// 键盘输入
KeyBoard keyBoard = (KeyBoard) usb;
keyBoard.type();
}
// 关闭usb设备
usb.close();
}
}
}
package com.junlong.laptop;
/**
* USB接口
* @Author: junlong.zhou
* @Date: 2021/6/25 14:20
* @Version 1.0
*/
public interface Usb {
// 开启
void open();
// 关闭
void close();
}
package com.junlong.laptop;
/**
* 鼠标类
* @Author: junlong.zhou
* @Date: 2021/6/25 14:20
* @Version 1.0
*/
public class Mouse implements Usb {
@Override
public void open() {
System.out.println("鼠标已启用...");
}
@Override
public void close() {
System.out.println("鼠标已关闭...");
}
public void click() {
System.out.println("鼠标点击...");
}
}
package com.junlong.laptop;
/**
* 键盘类
* @Author: junlong.zhou
* @Date: 2021/6/25 14:21
* @Version 1.0
*/
public class KeyBoard implements Usb {
@Override
public void open() {
System.out.println("键盘已启用...");
}
@Override
public void close() {
System.out.println("键盘已关闭...");
}
public void type() {
System.out.println("键盘正在输入...");
}
}
package com.junlong.laptop;
/**
* 测试类
* @Author: junlong.zhou
* @Date: 2021/6/25 14:21
* @Version 1.0
*/
public class Test {
public static void main(String[] args) {
// 创建电脑对象
Laptop laptop = new Laptop();
// 电脑开机
laptop.open();
// 使用鼠标
laptop.useUsb(new Mouse());
// 使用键盘
laptop.useUsb(new KeyBoard());
// 电脑关机
laptop.shoutDown();
}
}
如果你看到了这里,请小伙伴给个一键三连,你的肯定是对我最大的鼓励-