6.1.1 接口的概念
接口中的方法自动是 public
class Employee implements Comparable
指定类型:
比较之前需要检测是否是同一类型:
if (getClass() != other.getClass()) throw new ClassCastException();
6.1.2 接口的属性
检查是否实现某个接口:
if (anObject instanceof Comparable) {...}
接口扩展接口:
package chapter06;
public interface Moveable {
void move(double x, double y);
}
public interface Powered extends Moveable {
// 字段总是 public static final
double SPEED_LIMIT = 95;
double milesPerGallon();
}
实现多个接口:
class Employee implements Cloneable, Comparable
6.1.3 接口与抽象类
为什么不用抽象类而使用接口?
- 每个类只能继承一个类
- 可以实现多个接口
- 避免多重继承
6.1.4 静态和私有方法
Java8 支持在接口中增加静态方法.
- 避免
伴随
类
Java9 中接口的方法可以是 private.
6.1.5 默认方法
为接口提供默认实现:
实现 “接口演化”, 如果接口改了, 那么 default
可以兼容老代码
6.1.6 解决默认方法冲突
- 优先继承超类的
- 然后覆盖接口的
6.1.7 接口与回调
6.1.8 Comparator 接口
6.1.9 对象克隆
Cloneable 接口是 Java 提供的少数标记接口