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();//笔记本电脑关机
    }
}
/*
笔记本电脑开机
打开鼠标
鼠标点击
关闭鼠标
打开键盘
键盘输入
关闭键盘
笔记本电脑关机
 */
原文地址:https://www.cnblogs.com/deer-cen/p/12248593.html