接口
当一个抽象类,如果抽象类中的所有方法都是抽象的,那么我们就可以把它定义为一个接口,接口是对行为的抽象。类是对属性和行为的抽象。
语法:
interface 接口名{
方法的定义;
….
}
接口的特征
1.接口中的方法的定义不需要Abstract来修饰,默认就是抽象的
2.接口是不可以实例化的,需要有类来实现接口的语法:
class 类名 implements 接口名,接口名,…{
//实现每一个接口中的方法
}
3.接口中的方法不能和private,static和final共存
4.在接口中可以定义”属性”(常量),可以通过接口的实现类的实例来访问(不推荐),推荐使用接口名.常量,这是一个常量默认是public, static ,final。
5.接口可以继承接口(多继承)(两个接口中有相同方法,接口会把两个方法合并,需要在实现类中实现)。
接口在JDK1.8中的特性
1.在接口中定义静态方法。
interface ArrayUtils{
public static void printArr(int[] arr){
for(int i = 0; i < arr.length; i++)
System.out.print(arr[i]+"\t");
}
}
public static void main(String[] args){
ArrayUtils.printArr(new int[]{1,2,4,6,7});
}
2.在接口中定义默认方法实现
interface Person{
public default void learn(){
System.out.println("我是一个默认实现的方法");
}
}
使用接口的好处:
- 接口定义的是一种标准,可以使我们的代码分层开发,分模块开发。
- 降低代码的耦合度,提高代码的可扩展性和可维护性
- 接口改进了单继承的局限。
接口和抽象类的区别:
1.接口是行为的抽象可以有静态方法,抽象方法和默认方法,抽象类中可以有所有方法。
2.接口和抽象类都不能实例化,接口需要类来实现后实例化实现类,抽象类需要类来继承然后实例化子类。
3.抽象类只能单继承,接口可以多继承接口(jdk1.7),接口还可以多实现。
4.接口中的“属性”是public static final类型的,抽象类中的属性跟普通类中的属性没有区别。
5.接口中的方法默认就是抽象的不需要加absract,抽象类中的抽象方法需要加abstract关键字。