-
案例需求介绍
- 笔记本电脑(laptop)通常具备使用USB设备的功能。在生产时,笔记本都预留了可以插入USB设备的USB接口,但具体是什么USB设备,笔记本厂商并不关心,只要符合USB规格的设备都可以。
- 定义USB接口,具备最基本的开启功能和关闭功能。鼠标和键盘要想能在电脑上使用,那么鼠标和键盘也必须遵守USB规范,实现USB接口,否则鼠标和键盘的生产出来也无法使用。
-
分析
进行描述笔记本类,实现笔记本使用USB鼠标、USB键盘
- USB接口,包含开启功能、关闭功能
- 笔记本类,包含运行功能、关机功能、使用USB设备功能
- 鼠标类,要实现USB接口,并具备点击的方法
- 键盘类,要实现USB接口,具备敲击的方法‘
代码实现:
接口代码实现:
public interface Usb {
void open();
void close();
}
笔记本类代码实现:
public class Laptop {
public void open(){
System.out.println("笔记本开机");
}
public void close(){
System.out.println("笔记本关机");
}
// 定义笔记本电脑接入usb接口方法,将Usb作为形参
public void getUsb(Usb usb){
usb.open();
// 用instanof判断,是否是原子类向上转型为父类引用
if (usb instanceof Mouse){
// 如果判断为true,则进行向下转型
Mouse mouse=(Mouse) usb;
mouse.getCick();
}else if (usb instanceof Keyboard){
Keyboard keyboard=(Keyboard) usb;
keyboard.getText();
}
}
}
鼠标类代码实现:
public class Mouse implements Usb {
@Override
public void open() {
System.out.println("鼠标接入");
}
@Override
public void close() {
System.out.println("鼠标拔出");
}
public void getCick(){
System.out.println("鼠标点击");
}
}
键盘类代码实现:
public class Keyboard implements Usb {
@Override
public void open() {
System.out.println("键盘插入");
}
@Override
public void close() {
System.out.println("键盘拔出");
}
//定义独有方法键盘打字
public void getText(){
System.out.println("键盘打字");
}
}
定义测试类:
public class Test {
public static void main(String[] args) {
Laptop laptop = new Laptop();
laptop.open();
// 创建鼠标类实体对象
Usb usb=new Mouse();
// 笔记本使用鼠标的功能
laptop.getUsb(usb);
usb.close();
// 创建键盘类实体对象
Keyboard keyboard=new Keyboard();
// 笔记本使用键盘的功能
laptop.getUsb(keyboard);
keyboard.close();
laptop.close();
}
}
输出结果: