zoukankan      html  css  js  c++  java
  • java 26.练习

    背景

    前面学习了接口、多态、向上转型、向下转型、instanceof关键字,本节主要是应用这些知识点实现一个小需求。

    需求

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

    分析

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

    image

    示例代码

    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();
        }
    }
    

    输出

    开机
    打开鼠标
    鼠标点击
    关闭鼠标
    打开键盘
    键盘输入
    关闭键盘
    关机
    
    更多学习笔记移步 https://www.cnblogs.com/kknote
  • 相关阅读:
    WebRTC学习资料大全
    WebRTC学习与DEMO资源一览
    WebRTC MCU( Multipoint Conferencing Unit)服务器调研
    基于Kurento的WebRTC移动视频群聊技术方案
    使用 nginx 和 rtmp 插件搭建视频直播和点播服务器
    利用nginx搭建RTMP视频点播、直播、HLS服务器
    几个学习流媒体的案例代码网址
    rtmp与hls流媒体服务器搭建:ubuntu下Nginx搭建初探与rtmp-module的添加
    Neo4j模糊查询及分页查询
    自定义中文全文索引
  • 原文地址:https://www.cnblogs.com/kknote/p/15355051.html
Copyright © 2011-2022 走看看