笔记本USB接口案例

笔记本电脑(laptop)通常具备使用USB设备的功能。

在生产时,笔记本都预留了可以插入USB设备的USB接口,

但具体是什么USB设备,笔记本厂商并不关心,只要符合USB规格的设备都可以。

 

定义USB接口,具备最基本的开启功能和关闭功能。鼠标和键盘要想能在电脑上使用,

那么鼠标和键盘也必须遵守USB规范,实现USB接口,否则鼠标和键盘的生产出来也无法使用。

 

分析: 进行描述笔记本类,实现笔记本使用USB鼠标、USB键盘

 

①USB接口,包含打开设备功能、关闭设备功能。

②笔记本类,包含开机功能、关机功能、使用USB设备功能。

③鼠标类,要实现USB接口,并具备点击的方法。

④键盘类,要实现USB接口,具备敲击的方法。

笔记本USB接口案例_第1张图片

//USB接口
package 电脑USB接口;

/**
 * @Author: Jason
 * @Date: 2019/8/14 22:57
 * @Version 1.0
 */
public interface USB {
    public abstract void open();   //打开设备

    public abstract void close();   //关闭设备

}

 

//电脑类
public class Computer {

    public void powerOn(){
        System.out.println("电脑开机");
    }
    public void powerOff(){
        System.out.println("电脑关机");
    }
    public void usbDevice(USB usb) {
        usb.open();  //打开设备
        usb.close(); //关闭设备

    }
}

 

//鼠标就是一个USB设备
public class Mouse implements USB{

    @Override
    public void open() {
        System.out.println("打开鼠标");
    }

    @Override
    public void close() {
        System.out.println("关闭鼠标");
    }
}

 

//键盘就是一个USB设备
public class Keyboard implements USB{

    @Override
    public void open() {
        System.out.println("打开键盘");
    }

    @Override
    public void close() {
        System.out.println("关闭键盘");
    }
}

 

//测试类
public class DemoTest {
    public static void main(String[] args) {
        //首先创建一个笔记本
        Computer computer = new Computer();
        computer.powerOn();

      /*  //准备一个鼠标供电脑使用
        Mouse mouse = new Mouse();
        //首先进行向上转型,当作USB来用
        USB usb = mouse;
        */
      //或者用多态
        USB usbMouse = new Mouse();  //左父右子 多态

        //参数是USB类型,刚好传递进去的是USB鼠标
         computer.usbDevice(usbMouse);

         //创建一个键盘
        Keyboard keyboard = new Keyboard(); //没有使用多态写法 无向上转型

        //方法参数是USB类型,但传递进去的是一个实现对象
        computer.usbDevice(keyboard);   //这里本是USB类型 但keyboard可以  这里也自动发生了向上转型
      //  computer.usbDevice(new Keyboard()); //也可以

        //实现类向上转型成为接口类型

        computer.powerOff();
    }
}

 

笔记本USB接口案例_第2张图片

 

对于自动转型实例理解

package 电脑USB接口;

/**
 * @Author: Jason
 * @Date: 2019/8/15 0:24
 * @Version 1.0
 */
public class 自动向上转型理解 {

    public static void main(String[] args) {
        method(10.10);  //正确 double --> double
        method(20);     //正确 int --> double 自动转型
        int a = 89;
        method(a);           //int --> double  double范围大 自动向上转型
    }

    public static void method( double num){
        System.out.println(num);

    }
}

笔记本USB接口案例_第3张图片

 

鼠标、键盘类的特有方法 使用向下转型

//鼠标就是一个USB设备
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("点击鼠标");
    }
}

//键盘就是一个USB设备
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("键盘输入");
    }
}

 

public class Computer {

    public void powerOn(){
        System.out.println("电脑开机");
    }
    public void powerOff(){
        System.out.println("电脑关机");
    }

    public void usbDevice(USB usb) {
        usb.open();  //打开设备

        if(usb instanceof Mouse){   //必须先判断
            Mouse mouse = (Mouse) usb;  //鼠标特有方法 向下转型
            mouse.click();
        }else if(usb instanceof Keyboard){     //必须先判断
            Keyboard keyboard = (Keyboard) usb;   //键盘特有方法 向下转型
            keyboard.type();
        }
        usb.close(); //关闭设备

    }
}

 

添加完这几处 再运行测试类

笔记本USB接口案例_第4张图片

你可能感兴趣的:(java,se学习)