目录:

  • 概念
  • 格式
  • 接口之间的多继承
  • 抽象类与接口的区别
  • JDK版本的影响
  • 接口的实现

概念

  • 在JAVA中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明
  • 接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法
  • 接口名常常以“I”开头,就是interface的首字母大写,这样容易知道这是个接口,相当于注释的作用

格式

  • 接口是隐式抽象的,当声明一个接口的时候,不必使用abstract关键字。
  • 接口中每一个方法也是隐式抽象的,声明时同样不需要abstract关键字。
  • 接口中的方法都是公有的。
访问权限 interface 接口名称 extends 其他的接口名 {
        // 声明变量
        // 抽象方法
}

接口之间的多继承

  • 如果没有继承其他接口的话,“extends 其他的接口名”可以省略
  • 接口可以继承一个或多个接口(java中的多继承就是靠接口实现的),接口名之间用逗号隔开
public interface 接口名 extends 接口名1,接口名2{

}

抽象类和接口的区别

  • 抽象类中的成员变量可以是各种类型的,而接口中只能是 public static final 类型的常量
  • 抽象类中的抽象方法必须有public abstract修饰,而接口中的抽象方法默认为public abstract,且只能为public abstract,不能修改,所以可以省略
/在接口里这两个一样
public abstract void eat();
void eat();
  • 接口中不能含有静态代码块以及静态方法(用 static 修饰的方法),而抽象类是可以有静态代码块和静态方法
  • 一个类只能继承一个抽象类,而一个类却可以实现多个接口

JDK版本的影响

  1. JDK1.8以前
  • 接口中只能有常量和抽象方法
  1. JDK1.8及以后
  • 接口中除了常量和抽象方法,还可以定义多个default和static具体方法(有方法体)

接口的实现

  • 当类实现接口的时候,类要实现接口中所有的方法。否则,类必须声明为抽象的类。
  • 类使用implements关键字实现接口。在类声明中,Implements关键字放在class声明后面。
  • 除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。(换言之:接口的子类要么是抽象类,要么定义接口中所有的方法)
public class 类名 implements 接口名1,接口名2{

}