zoukankan      html  css  js  c++  java
  • 利用多态,简易实现电脑usb连接设备案例

    package cn.learn.Practice03;
    
    public interface UsbInterface {
        void open();  //打开usb
        void close(); //关闭usb
    }
    package cn.learn.Practice03;
    
    public class Keyboard implements UsbInterface {
        @Override
        public void open() {
            System.out.println("打开键盘连接");
        }
    
        @Override
        public void close() {
            System.out.println("关闭键盘");
        }
        public void type(){
            System.out.println("键盘输入文字");
        }
    }
    package cn.learn.Practice03;
    
    public class Mouse implements UsbInterface {
        @Override
        public void open() {
            System.out.println("打开鼠标连接");
        }
    
        @Override
        public void close() {
            System.out.println("关闭鼠标");
        }
    
        public void click(){
            System.out.println("鼠标点击");
        }
    }
    package cn.learn.Practice03;
    
    public class LapTop {
    
        public void powerOn(){
            System.out.println("笔记本开机");
        }
        public void powerOff(){
            System.out.println("笔记本关机");
        }
    
        //电脑使用usb,接口作为参数列表
        public void useDevice(UsbInterface usb){
            usb.open();  //实际调用的是鼠标或者键盘的open方法
    
            //如果传入的是Mouse,则将参数向下转型,进行点击
            if(usb instanceof Mouse){
                //参数转型
                Mouse m = (Mouse) usb;
                //进行点击
                m.click();
            }
            //如果传入的是Keyboard,则将参数向下转型,进行点击
            if(usb instanceof Keyboard){
                //参数转型
                Keyboard k = (Keyboard) usb;
                //进行打字
                k.type();
            }
    
            usb.close(); //关闭设备
        }
    }
     1 package cn.learn.Practice03;
     2 
     3 public class Enter {
     4     public static void main(String[] args) {
     5         //首先创建一个笔记本电脑
     6         LapTop one = new LapTop();
     7         one.powerOn();
     8 
     9 
    10         //准备一个鼠标
    11         Mouse mouse = new Mouse();
    12 
    13         //mouse.open();  接口也有该方法,重名,编译通过,运行在右子类优先
    14         /*
    15 
    16         ??正确写法,看似传入的是一个对象,实际是实现类,自动向上转型
    17         eg:int a=10;method(a);参数列表是double
    18         不恰当的可以把Mouse 看作 int
    19         甚至可以这么写one.useDevice(new mouse()); -匿名对象生成
    20         自动转型为Mouse实现类,传递给useDevice(UsbInterface usb);
    21 
    22          */
    23         //调用电脑使用鼠标
    24         one.useDevice(mouse);//触发click方法
    25 
    26         //另一种写法,准备一个键盘,向上转型
    27         UsbInterface keyboard= new Keyboard();
    28         //keyboard.open();    接口也有该方法,重名,编译通过,运行在右子类优先
    29         //((Keyboard) keyboard).type();  不能使用自己的单独方法与上面对比
    30         //调用电脑使用键盘
    31         one.useDevice(keyboard);
    32 
    33 
    34         one.powerOff();
    35     }
    36 
    37 }
  • 相关阅读:
    VBA_headers_mapping
    pandas_知识总结_基础
    python_super()及继承顺序
    python_端口扫描
    python_socket登陆验证_明文
    python_sys.argv的使用
    python_os_shutil_获取文件夹下所有文件的大小
    python_面向对象_组合
    魔术球问题 【网络流24题】【建图技巧】
    牛客&科大讯飞杯&SHU、L动物森友会【二分】【网络流】
  • 原文地址:https://www.cnblogs.com/huxiaobai/p/11470310.html
Copyright © 2011-2022 走看看