• java基础---25. 接口多态综合案例


    1 案例

    2 案例分析

    3 代码实现

    • 定义一个接口
    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("笔记本电脑关机");
        }
    
        //使用usb设备方法,使用接口作为方法的参数
        public void useDevice(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设备
    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 DemoMain {
        public static void main(String[] args) {
            //首先创建一个笔记本电脑
            Computer computer = new Computer();
            computer.powerOn();//笔记本电脑开机
    
            //1.
    //        Mouse mouse = new Mouse();
    //        USB usb = mouse;
            //首先进行向上转型   准备一个鼠标供电脑使用
            //上两行代码可以改写为
            USB usbMouse = new Mouse();//多太写法
            //参数要求USB类型,我传递进去的正好就是USB鼠标
            computer.useDevice(usbMouse);
    
            //2.
            //创建一个usb键盘
            Keyboard keyboard = new Keyboard();
            //方法参数是USB类型,传递进去的是实现类对象
            computer.useDevice(keyboard);//正确写法 向上类型转换  类型与数据类型里的自动类型转换
            //使用子类对象、匿名对象也可以
            //computer.useDevice(new Keyboard());//也是正确写法
    
            computer.powerOff();//笔记本电脑关机
        }
    }
    /*
    笔记本电脑开机
    打开鼠标
    鼠标点击
    关闭鼠标
    打开键盘
    键盘输入
    关闭键盘
    笔记本电脑关机
     */
    
  • 相关阅读:
    ASP.NET Web API +Swagger创建与汉化生成 API说明文档
    Apple 开发者账号 All In One
    CS50 2022 All In One
    TypeScript private field All In One
    js RegExp test bug All In One
    vite preview not work All In One
    Flutter Resources All In One
    table 组件性能优化 All In One
    Stanford CS193p All In One
    Swift 5.x bug All In One
  • 原文地址:https://www.cnblogs.com/deer-cen/p/12248593.html
Copyright © 2020-2023  润新知