1.接口概念:
在Java程序设计语言中,接口不是类,而是对类的一组需求描述,这些类要遵从接口描述的统一格式进行定义
接口中所有方法自动属于public
接口绝不能有实例域,在Java SE 8之前,也不能在接口中实现方法
将类声明为实现某个接口,需要使用关键字implements
2.java.lang.Comparable<T> 1.0:
int compareTo(T other)
用这个对象与other进行比较。如果这个对象小于other则返回负值,相等返回0,否则返回正值
3.java.util.Arrays 1.2:
static void sort(Object[] a)
使用mergesort算法对数组a中的元素进行排序。要求数组中的元素必须属于实现了Comparable接口的类,并且元素之间必须是可比较的
4.java.lang.Integer 1.0:
static int compare(int x,int y) 7
如果x<y返回一个负整数;如果相等返回0;否则返回一个正整数
5.java.lang.Double 1.0:
static int compare(double x,double y) 1.4
同上
6.接口的特性:
不能构造接口的对象,却能声明接口的变量:
Comparable x;
接口变量必须引用实现了接口的类对象
x = new Employee();
可以使用instance检查一个对象是否实现了某个接口
接口也可以被扩展,可以使用关键字extends
接口中可以包含常量
7.接口与抽象类:
接口可以提供多重继承但是抽象类不行
8.静态方法:
在Java SE 8中,允许在接口中增加静态方法,通常的做法是将静态方法放在伴随类中
9.默认方法:
关键字default
默认方法的一个重要作用是“接口演化”,因为为接口添加一个非默认方法不能保证“源代码兼容”
在Java API中很多接口都有相应的伴随类用来实现接口的部分方法或全部方法,但是在Java SE 8中这个技术已经过时了,现在可以直接在接口中实现方法
10.解决默认方法冲突:
如果先在一个接口中将一个方法定义为默认方法,然后又在超类中定义了同样的方法,根据“类优先”原则超类中的方法会被用到
如果一个类继承了两个接口,这两个接口中拥有相同的默认方法,这个时候编译器就会报错,需要程序员解决二义性
千万不要让接口重定义Object中的方法,因为没有意义