6.1 接口
6.1.1 接口的概念
- 在Java程序设计语言中,
接口不是类
,而是对类的一组需求描述,这些类要遵从接口描述的统一格式进行定义 - 接口不能有实例域,提供实例域和方法实现的任务应该由实现接口的那个类完成
- 类实现接口的步骤:
- 使用关键字
implements
将类声明为实现给定的接口 - 对接口中的所有方法进行定义
- 使用关键字
API | 所在包 | 描述 |
---|---|---|
int compareTo(T other) |
java.lang.Comparable<T> |
用这个对象与other进行比较. 如果对象小于Other返回负值; 如果相等返回0; 否则返回正值 |
static void sort(Object[] a) |
java.util.Arrays |
使用mergsort算法 对数组a中的元素进行排序要求数组中的元素 必须属于实现了Comparable接口的类 ,并且元素之间必须是可比较的 |
static int compare(int x,int y) |
java.lang.Integer |
如果x<y,返回一个负整数 x==y,返回0 否则 返回一个正整数 |
static int compare(double x ,double y) |
java.lang.Doule |
x<y ,返回负数 x==y,返回0 否则 返回一个负数 |
6.1.2 接口的特性
- 接口不是类,尤其不能使用new运算符实例化一个接口
- 可以声明接口的变量,接口变量
必须引用实现了接口的类对象
- 可以使用
instance
检查一个对象是否实现了某个特定的接口 - 允许存在多条从具有较高通用性的接口到较高专用性接口的链
- 一个类可以实现多个接口
6.1.3 接口与抽象类
- Java不支持多继承
- 多继承会让语言本身变得非常复杂,效率也会降低
- 接口可以提供多继承的大多数好处,同时还能避免多继承的复杂性和低效性
6.1.4 静态方法
- 允许在接口中添加静态方法
6.1.5 默认方法
- 可以为接口方法提供一个
默认实现
.必须用default修饰符
标记.
6.1.6 解决默认方法冲突
- 规则
父类优先
: 如果父类提供了一个具体方法,同名而且具有相同参数类型的默认方法会被忽略接口冲突
: 如果一个父接口提控了一个默认方法,另一个接口提供了一个同名而且参数类型相同的方法,必须覆盖这个方法
来解决冲突