Java 接口、抽象类、继承、多态的综合案例

案例背景

电脑通常是支持 USB设备 的功能,通过 USB 可以连接鼠标、键盘等,还能进行鼠标的点击,键盘的输入等鼠标的特有操作

案例分析

进行操作的主类,电脑类,实现电脑使用USB鼠标,USB键盘

  • USB 接口类:包含打开设备关闭设备功能
  • 电脑类:包含开机关机使用USB设备 的功能
  • 鼠标:实现 USB接口,并有点击的功能
  • 键盘:实现 USB接口,必有输入的方法

案例实现

定义USB接口类:

public interface USB {
    // 开启设备
    public abstract void open();

    // 关闭接口
    public abstract void close();
}

定义电脑类:

public class Computer {

    // 开启电脑方法
    public void on() {
        System.out.println("开启电脑");
    }

    // 关闭电脑方法
    public void off() {
        System.out.println("关闭电脑");
    }

    // 使用设备
    public void useDevice(USB use){
        use.open();  // USB 设备的开启

        // USB 设备特有方法的使用
        if (use instanceof Mouse){          // 判断 Mouse 的父类是不是 USB
            Mouse useMouse = (Mouse) use;  // 向下转型
            useMouse.click();
        }else if (use instanceof Keyboard){
            ((Keyboard) use).input();      // 向下转型
        }

        use.close();  // 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("鼠标点击了");
    }

}

键盘类:

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("正在输入中......");
    }
}

操作的主类:

public class MainDemo {

    public static void main(String[] args) {

        // 实例化电脑类
        Computer computer = new Computer();
        computer.on();  // 电脑开机

        // USB鼠标的操作
        USB mouse = new Mouse(); // 多态的写法
        computer.useDevice(mouse);

        // USB键盘的操作
        Keyboard keyboard = new Keyboard(); // 不是多态写法
        USB usbKeyboard = keyboard; // 向上转型 为 USB 类
        computer.useDevice(usbKeyboard);

        computer.off(); // 电脑关机
    }
}
发表评论 / Comment

用心评论~

金玉良言 / Appraise
明妃LV 2
2019-10-26 15:09
这个不错哟!!!!