目录:
- 概念
- 格式
- 接口之间的多继承
- 抽象类与接口的区别
- 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版本的影响
- JDK1.8以前
- JDK1.8及以后
- 接口中除了常量和抽象方法,还可以定义多个default和static具体方法(有方法体)
接口的实现
- 当类实现接口的时候,类要实现接口中所有的方法。否则,类必须声明为抽象的类。
- 类使用implements关键字实现接口。在类声明中,Implements关键字放在class声明后面。
- 除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。(换言之:接口的子类要么是抽象类,要么定义接口中所有的方法)
public class 类名 implements 接口名1,接口名2{
}