6.1.1 接口的概念

接口中的方法自动是 public

  1. class Employee implements Comparable

image.png

指定类型:

image.png

比较之前需要检测是否是同一类型:

  1. if (getClass() != other.getClass()) throw new ClassCastException();

6.1.2 接口的属性

检查是否实现某个接口:

  1. if (anObject instanceof Comparable) {...}

接口扩展接口:

  1. package chapter06;
  2. public interface Moveable {
  3. void move(double x, double y);
  4. }
  5. public interface Powered extends Moveable {
  6. // 字段总是 public static final
  7. double SPEED_LIMIT = 95;
  8. double milesPerGallon();
  9. }

实现多个接口:

  1. class Employee implements Cloneable, Comparable

6.1.3 接口与抽象类

为什么不用抽象类而使用接口?

  • 每个类只能继承一个类
  • 可以实现多个接口
  • 避免多重继承

6.1.4 静态和私有方法

Java8 支持在接口中增加静态方法.

  • 避免 伴随

Java9 中接口的方法可以是 private.

6.1.5 默认方法

为接口提供默认实现:

image.png

实现 “接口演化”, 如果接口改了, 那么 default 可以兼容老代码

6.1.6 解决默认方法冲突

  • 优先继承超类的
  • 然后覆盖接口的

6.1.7 接口与回调

6.1.8 Comparator 接口

6.1.9 对象克隆

Cloneable 接口是 Java 提供的少数标记接口