面向接口编程

什么是接口,为什么要用接口

  • 有时必须从几个类中派生出一个子类,继承它们所有的属性和方法。但是,Java 不支持多重继承。有了接口,就可以得到多重继承的效果。

  • 接口(interface)是抽象方法和常量值的定义的集合。

  • 从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。

  • 接口定义举例

    1
    2
    3
    4
    5
    6
    public interface Runner {
    int id = 1;
    public void start();
    public void run();
    public void stop();
    }

接口的特点

  • 用 interface 来定义。
  • 接口中的所有成员变量都默认是由 public static final 修饰的。
  • 接口中的所有方法都默认是由 public abstract 修饰的。接口没有构造方法。
  • 实现接口的类中必须提供接口中所有方法的具体实现内容。
  • 多个无关的类可以实现同一个接口
  • 一个类可以实现多个无关的接口
  • 与继承关系类似,接口与实现类之间存在多态性
  • 接口也可以继承另一个接口,使用 extends 关键字
  • 实现接口的类中必须提供接口中所有方法的具体实现内容。
  • 多个无关的类可以实现同一个接口
  • 一个类可以实现多个无关的接口
  • 与继承关系类似,接口与实现类之间存在多态性

接口的使用

  1. 编写接口

    1
    2
    3
    4
    5
    6
    public interface UsbInterface{
    /**
    *USB接口提供服务
    */
    void service();
    }
  2. 实现接口

    1
    2
    3
    4
    5
    public class UDisk implements UsbInterface{
    public void service(){
    System.out.println("连接USB口,开始传输数据.");
    }
    }
  3. 使用接口

    1
    2
    UsbInterface uDisk = new UDisk();
    uDisk.service();