接口实现多态特性的例子

多态是Java面向对象开发的三大特性(封装、继承、多态)之一:封装和继承是类的特性,而多态是对象的特性,我们也可以从字面上简单的理解多态就是对象的多种状态。
以下通过一个接口多个实现的例子进行分析:

代码:

/**
 * USB接口中
 */
public interface Usb {
    void openUsb();
}

/**
 * 实现USB接口的鼠标类
 */
public class Mouse implements Usb{
    @Override
    public void openUsb() {
        System.out.println("打开Usb鼠标");
    }
    
    public void click(){
        System.out.println("鼠标单击");
    }
}

/**
 * 实现USB接口的键盘类
 */
public class Keyboard implements Usb {
    @Override
    public void openUsb() {
        System.out.println("打开Usb键盘");
    }
    
    public void click(){
        System.out.println("键盘单击");
    }
}

/**
 * 使用USB接口的电脑类
 */
public class Computer {
    public void powerOn()  { System.out.println("电脑打开电源"); }

    public void powerOff(){
        System.out.println("电脑关闭电源");
    }

    public void UseUsbDevice(Usb usb){ 
        usb.openUsb(); 
        if (usb instanceof Mouse){
            ((Mouse) usb).click();
        }
        if(usb instanceof Keyboard){
            ((Keyboard) usb).click();
        }
    }
}
//测试类
public class Test {
    public static void main(String[] args) {
        Computer computer = new Computer();

        Usb usbMouse = new Mouse();
        computer.UseUsbDevice(usbMouse);

        Usb usbKeyboard = new Keyboard();
        computer.UseUsbDevice(usbKeyboard);

    }
}

总结

  • Mouse和Keyboard类都实现了USB接口(接口是不能被实例化的,不同的接口实现类就是多态的表现)
  • 在Test测试类中将USB接口引用指向了usbMouse和usbKeyboard对象,其实就是实现多态的描述
  • 在Computer类的UseUsbDevice对传入的具体对象作instantceof对象类型判断,这就是运行时多态
原创文章 56 获赞 8 访问量 4751

猜你喜欢

转载自blog.csdn.net/jpgzhu/article/details/105181851