更新时间:2022年08月30日14时39分 来源:传智教育 浏览次数:
如果一个抽象类的所有方法都是抽象的,则可以定义这个类为接口。接口是Java中最重要的概念之一,接口是一种特殊的类,由全局常量和公共的抽象方法组成,不能包含普通方法。
在JDK8之前,接口是由全局常量和抽象方法组成的,且接口中的抽象方法不允许有方法体。JDK8对接口进行了重新定义,接口中除了抽象方法之外,还可以有默认方法和静态方法(也称类方法),默认方法使用default修饰,静态方法使用static修饰,且这两种方法都允许有方法体。
接口使用interface关键字声明,语法格式如下:
public interface 接口名 extends 接口1,接口2...{ public static final 数据类型 常量名 = 常量值; public default 返回值类型 抽象方法名 (参数列表); public abstract 返回值类型 方法名 (参数列表) { //默认方法的方法体 } public abstract 返回值类型 方法名(参数列表) { //类方法的方法体 } }
在上述语法中,“extend接口1,接口2...”表示一个接口可以有多个父接口,父接口之间用逗号分隔。Java使用接口的目的是克服单继承的限制,因为一个类只能有一个父类,而一个接口可以同时继承多个父接口。接口中的变量默认使用“public static final”进行修饰,即全局常量。接口中定义的方法默认使用“public abstract”进行修饰,即抽象方法。如果接口声明为public,则接口中的变量和方法全部为public。
注意:
在很多Java程序中,经常看到编写接口中的方法时省略了public,有很多读者认为它的访问权限是default,这实际上是错误的。不管写不写访问权限,接口中方法的访问权限永远是public。与此类似,在接口中定义常量时,可以省略前面的“public static final”,此时,接口会默认为常量添加“public static final”。