接口是一组对类的需求描述,这些类要遵从接口描述的统一格式进行定义。
“如果你的类遵从某个特定接口,那么我就履行这项服务”。
一个具体的例子:Arrays类中的sort方法承诺可以对对象数组进行排序,但要求满足一个前提:对象所属的类必须实现了Comparable接口。
如:
class Employee implements Comparable<Employee>{ private double salary; public int compareTo(Employee other){ if(salary<other.salary) return -1; if(salary>other.salary) return 1; return 0; } }
这样就可以对Employee数组如employees进行排序了:Arrays.sort(employees);
为什么不能直接提供一个compareTo方法,而必须实现Comparable接口呢?
主要原因在于Java程序设计语言是一种强类型(strongly typed)语言。在调用方法如sort时,编译器将会检查这个方法compareTo是否存在 。为此,编译器必须确认数组成员a[i]一定有compareTo方法。
接口七大特性:
1、接口不是类,尤其是不能使用new运算符实例化一个接口
2、可以声明接口变量,接口变量必须引用实现了接口的类对象
3、可以使用instanceof检查一个对象是否实现了某个特定的接口
4、可用extends关键字扩展接口
5、尽管在接口中不能包含实例域或静态方法,但是可以包含常量
6、与接口中的方法一样,接口中的域也自己地设为public static final
7、尽管每个类只能够拥有一个超类,但却可以实现多个接口(与抽象类相比的优势之一)