接口的使用,对象的上下转型

创建一个USB接口

package Day7;/*
 *@author wanghongyuan
 *@Create 2020/12/13 15:51
 */
// 定义了一个接口是USB,里面有两个抽象类方法,open什么设备,close什么设备都不清楚。
// 抽象类方法是不带大括号的。
public  interface  USB {
    public abstract void open();// 打开设备
    public abstract void close();// 关闭设备
}


创建一个笔记本电脑类


package Day7;/*
 *@author wanghongyuan
 *@Create 2020/12/13 15:53
 */

import Day3.Manager;
import Day3.Member;

public  class Computer {
    public void ProwOn(){
        System.out.println("笔记本电脑开机");
    }
    public void ProwOff(){
        System.out.println("笔记本电脑关机");
    }
    // 使用设备USB的方法,使用接口作为方法的参数
    public void useDevice(USB usb){
        // 打开设备
        usb.open();
        // 关闭设备
        usb.close();

        // 因为鼠标和键盘都有其特殊的方法
        // 这边我们用到判断
        if (usb instanceof Keyboard){
            Keyboard keyboard = (Keyboard) usb;
            //向下转型
            keyboard.type();
        }if (usb instanceof Mouse){
            Mouse mouse = (Mouse) usb;
            mouse.click();
        }

    }

}

创建一个鼠标类实现USB 接口


package Day7;/*
 *@author wanghongyuan
 *@Create 2020/12/13 15:54
 */
// 鼠标就是一个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接口


package Day7;/*
 *@author wanghongyuan
 *@Create 2020/12/13 15:56
 */
// 键盘就是一个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("键盘输入");
    }
}

创建一个Main方法


package Day7;/*
 *@author wanghongyuan
 *@Create 2020/12/13 19:13
 */

public class DomeMain {
    public static void main(String[] args) {
        Computer computer = new Computer();
        computer.ProwOn();
        USB mouse = new Mouse();
        mouse.open();
        mouse.close();
        System.out.println("===========================");
        USB keyboard = new Keyboard();
        keyboard.open();
        keyboard.close();


        System.out.println("==========");
        computer.useDevice(mouse);
        computer.useDevice(keyboard);


        computer.ProwOff();


    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值