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

输出

开机
打开鼠标
鼠标点击
关闭鼠标
打开键盘
键盘输入
关闭键盘
关机
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是一言

让我看看你的头像

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值