什么是接口

  • 是抽象方法的集合,接⼝通常以interface来声明,⼀个类通过继承接⼝的⽅式,从⽽而来继承接⼝的抽象⽅法
  • 语法

    1. interface 名称 [extends 其他的接口名] {
    2. // 声明变量
    3. // 抽象⽅法
    4. int getMoney();
    5. }

    接⼝的特点

  • 接⼝的方法都是抽象⽅法,默认都是 public abstract,其他修饰符都会报错

  • 接⼝中可以含有变量,但是接⼝中的变量会被隐式的指定为 public static final
  • 类描述对象的属性和⽅法,⽽接⼝则包含类要实现的方法
  • 接⼝无法被实例化,需要被实现才行
  • 一个实现接⼝的类,必须实现接⼝内所描述的所有⽅法,否则就必须声明为抽象类

    接⼝和类的区别

  • 接⼝没有构造函数

  • 接⼝里可以有静态方法和方法体
  • 接⼝中所有的方法必须是抽象方法(JDK8之后就不是)
  • 接⼝不是被类继承了,而是要被类实现
  • 接⼝支持多继承, 类不支持多个类继承

    接⼝的实现implements

  • 当类实现接口的时候,类要实现接口中所有的⽅法,不然类必须声明为抽象的类,使⽤implements关键字实现所有接⼝

  • 语法

    1. class 类名 implements 接⼝名称[, 其他接口名称, 其他接口名称]{
    2. //要实现的⽅方法
    3. }
  • 注意

    • 一个类只能继承⼀个类,但是能实现多个接⼝
    • 接⼝能继承另⼀个接口,接口的继承使用extends关键字,和类继承⼀样

      JDK8新特性

  • interface中可以有static方法,但必须有方法实现体,该方法只属于该接⼝,接⼝名直接调用该方法

  • 接⼝中新增default关键字修饰的方法,default⽅法只能定义在接口中,可以在⼦类或⼦接口中被重写
  • default定义的⽅法必须有方法体
  • 父接口的default⽅法如果在子接口或⼦类被重写,那么子接⼝实现对象、⼦类对象,调用该⽅法,以重写为准
  • 本类、接⼝如果没有重写父类(即接口)的default⽅法,则在调⽤default⽅法时,使⽤父类定义的default方法逻辑
    1. public interface IPay{
    2. // static修饰符定义静态⽅法
    3. static void staticMethod() {
    4. System.out.println("接⼝中的静态方法");
    5. }
    6. // default修饰符定义默认方法 ,默认方法不是抽象⽅法,可以不重写也可以重写
    7. default void defaultMethod() {
    8. System.out.println("接⼝中的默认方法");
    9. }
    10. }
    1. // static⽅法必须通过接口类调用
    2. IPay.staticMethod();
    3. //default方法必须通过实现类的对象调用
    4. new IPay().defaultMethod();
    image.png
    image.png
    image.png
    image.png
    image.png
    image.png