多态接口综合练习

package computerAndKeyboard;
//接口的定义
public interface USB {
    /*定义抽象方法*/
    /*接口不能创建对象,接口是更彻底的抽象*/
    void connect();
    void unconnect();
}

//实现类,键盘

package computerAndKeyboard;

public class KeyBoard implements USB{
    private String name;

    public KeyBoard() {
    }

    public KeyBoard(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public void connect() {
        System.out.println(name+"成功连接上了电脑");
    }

    /*
    * 独有方法*/
    public void keydown(){
        System.out.println(name+"敲击了键盘,没毛病");
    }
    @Override
    public void unconnect() {
        System.out.println(name+"成功从电脑中拔出!");
    }
}

//实现类,鼠标

package computerAndKeyboard;

public class mouse implements USB{
    private String name;

    public mouse() {
    }

    public mouse(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public void connect() {
        System.out.println(name+"成功连接上了电脑");
    }

    /*
    * 独有方法*/
    public void dbdone(){
        System.out.println(name+"点击了鼠标————");
    }
    @Override
    public void unconnect() {
        System.out.println(name+"成功从电脑中拔出!");
    }
}

//电脑类,用来连接两个设备

package computerAndKeyboard;

public class computer {
    private String name;

    public computer(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
     public void start(){
         System.out.println("开机了!");
     }
    /*提供安装USB的入口*/
    public void installUSB(USB usb){
        /*定义方法时,使用父类型作为参数,该方法便可以接收一切子类对象,体现了多态的扩展性和便利*/
        usb.connect();
        //独有功能,先判断再强转
        if (usb instanceof KeyBoard){
           KeyBoard K = (KeyBoard) usb;
           K.keydown();
        }else if(
                usb instanceof mouse
        ){
            mouse m = (mouse) usb;
            m.dbdone();
        }
        usb.unconnect();
    }
}

//测试类

package computerAndKeyboard;

public class Test {
    public static void main(String[] args) {
        /*创建电脑对象*/
        computer c = new computer("外星人");
        c.start();

        /*创建键盘对象*/
        USB a = new KeyBoard("顺钙盐");
        c.installUSB(a);  //电脑对象自己调用自己内部定义的方法,方法括号里接收的是自己的子类对象
        //在computer中定义方法时,就用父类作为参数,可以调用子类的一切对象。

        /*创建鼠标对象*/
        USB w = new mouse("罗技");
        c.installUSB(w);

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值