接口多态的综合案例

笔记本电脑(lappop) 通常具备使用USB设备的功能。在生产时,笔记本都预留了可以插入USB设备的USB接口,但具体是什么USB设备,笔记本厂商并不关心,只要符合USB规格的设备都可以。

定义USB接口,具备最基本的开启功能和关闭功能。鼠标和键盘要想能在电脑上使用,那么鼠标和键盘也必须遵守USB规范,实现USB接口,否则鼠标和键盘的生产出来也无法使用。

案例分析

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

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

笔记本类, 包含开机功能、关机功能使用USB设备功能鼠标类,要实现USB接口,并具备点击的方法

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

下面进行画图展示:
在这里插入图片描述代码演示:
USB接口

public interface USB {

    public abstract void open();//关机

    public abstract void close();//开机
}

Computer类

public class computer {

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


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

    //使用USB设备的方法,使用接口作为方法的参数
    public void useDevice(USB usb){
        usb.open();//打开设备

        if(usb instanceof Mouse){//如果usb向下转型是Mouse
            Mouse mouse = (Mouse) usb;
            mouse.click();
        }else if(usb instanceof Keybord){
            Keybord keybord = (Keybord) usb;
            keybord.input();
        }
        usb.close();//关闭设备
    }
}

Mouse类:

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

Keybord类:

//键盘是一个USB设备
public class Keybord implements USB {
    @Override
    public void open() {
        System.out.println("打开键盘!");
    }

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

    //键盘特有的方法
    public void input(){
        System.out.println("键盘的输入!");
    }
}

UsbTest测试类:

public class UsbTest {

    public static void main(String[] args) {
        //首先创建一个笔记本电脑对象
        computer computer = new computer();

        computer.powerOn();//开机

        //准备一个鼠标,供电脑使用
        USB usb = new Mouse();//进行向上转型,多态的写法
        //参数是usb类型,正好传递进去的就是USB鼠标
        computer.useDevice(usb);

        //创建一个USB键盘
        Keybord keybord = new Keybord();//没有使用多态写法
        //方法参数是USB类型,传递进去的是实现类对象
        computer.useDevice(keybord);
        //computer.useDevice(new Keybord());//等价于上面的两行

        computer.powerOff();//关机
    }
}

测试结果:

电脑开机
打开鼠标!
点击鼠标
关闭鼠标!
打开键盘!
键盘的输入!
关闭键盘!
电脑关机

猜你喜欢

转载自blog.csdn.net/qq_43751200/article/details/107501988
今日推荐