背景
前面学习了接口、多态、向上转型、向下转型、instanceof关键字,本节主要是应用这些知识点实现一个小需求。
需求
笔记本电脑(laptop)通常具备使用usb设备的功能,在生产时,笔记本都预留了可以插入usb设备的usb接口,但具体时什么usb设备,笔记本厂商并不关心,只要符合usb规格的设备都可以。
分析
定义usb接口,具备最基本的开启和关闭功能,鼠标和键盘要想能在电脑上使用,那么鼠标和键盘也必须遵守usb规范,实现usb接口,否则鼠标和键盘生产出来也无法使用。
示例代码
USB.java
package Demo0929;
public interface USB {
public abstract void open(); //打开设备
public abstract void close(); //关闭设备
}
Computer.java
package Demo0929;
public class Computer {
public void powerOn() {
System.out.println("开机");
}
public void powerOff() {
System.out.println("关机");
}
public void useDevice(USB usb) {
usb.open();
if(usb instanceof Mouse){
Mouse mouse = (Mouse) usb; //向下转型,使用usb设备特有的方法
mouse.click();
}else if(usb instanceof KeyBoard){
KeyBoard kb = (KeyBoard) usb;
kb.input();
}
usb.close();
}
}
Mouse.java
package Demo0929;
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("鼠标点击");
}
}
KeyBoard.java
package Demo0929;
public class KeyBoard implements USB {
@Override
public void open() {
System.out.println("打开键盘");
}
@Override
public void close() {
System.out.println("关闭键盘");
}
public void input(){
System.out.println("键盘输入");
}
}
mainDemo.java
package Demo0929;
import java.security.Key;
public class mainDemo {
public static void main(String[] args) {
Computer computer = new Computer();
computer.powerOn();
//多态写法
USB useMouse = new Mouse();
computer.useDevice(useMouse);
//不使用多态
KeyBoard kb = new KeyBoard();
computer.useDevice(kb);
computer.powerOff();
}
}
输出
开机
打开鼠标
鼠标点击
关闭鼠标
打开键盘
键盘输入
关闭键盘
关机