IDEA-接口多态的综合案例

笔记本电脑案例
首先创建一个电脑类

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) usb).click();//调用鼠标点击方法
        } else if (usb instanceof Keyboard) {//判断
            Keyboard keyboard = (Keyboard) usb;//向下转型
            ((Keyboard) usb).type();//调用键盘输入方法
        }
        usb.close();//关闭设备
    }

}

这里新建USB接口

public interface USB {

    public abstract void open();//打开设备
    public abstract void 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();
        //准备一个鼠标,供电脑使用
        Mouse mouse = new Mouse();
        //首先进行向上转型
        USB usbMouse = new Mouse();//多态
        //参数是USB类型,我正好传递进去的就是USB鼠标
        computer.useDevice(usbMouse);
        //准备一个键盘,供电脑使用
        Keyboard keyboard = new Keyboard();//没有使用多态写法
        //同样向上转型
        USB usbKeyboard = new Keyboard();
        //方法参数是USB类型,传递进去的是实现类对象
        computer.useDevice(keyboard);//正确写法,也发生了向上转型
        //使用子类对象,匿名对象也可以
        // computer.useDevice(new Keyboard());//这也可以
        //笔记本关机
        computer.powerOff();
    }
}

案例表明,当笔记本接收到USB接口的请求时,需要明白接入的是鼠标还是键盘,这时候需要向下转型,使用IF语句,判断类型从而调用私有化的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值