1. p223:通常将接口声明为 public ,此时接口中所有方法自动成为 public接口不能包含实例字段
    2. p233:从 Java5 开始,Comparable 接口已经提升为一个泛型类型:

      1. public interface Comparable<T>
      2. {
      3. int compareTo( T other );
      4. }
    3. 在实现 Comparable<Employee> 接口的类中,必须提供以下方法:
      int compareTo(Employee other)

    4. p228:如同使用 instanceof 检查一个对象是否属于某个特定类一样,也可以使用 instanceof 检查一个对象是否实现了某接口。
    5. p228:接口中可以声明变量,所有变量自动设为 public static final,无需写明。
    6. p230:在Java8中允许在接口中增加静态方法,从而为实用工具提供容身之处,不必用一个新类存放他们。
    7. p230:从Java 8开始可以为接口方法提供一个默认实现,必须用 default 修饰符标记这样一个方法。如果一个类只想实现一个接口的一部分,默认方法就很有用:

      1. public interface Iterator<E>
      2. {
      3. E next();
      4. boolean hasNext();
      5. default void remove() {
      6. throw new UnsupportedOperation("remove");
      7. }
      8. . . .
      9. }
      • 如果要实现一个只读的迭代器,就不用实现 remove 方法。
      • 默认方法的一个重要用法是“接口演化”。如果为接口新加一个方法,并把这个方法声明为默认方法,那么其它的旧代码就不需要修改。
    8. p232:如果一个类实现了多个接口,同时继承了一个类,在接口和超类中有相同签名的方法,这样解决命名冲突:
      1. 超类优先。这样就保证了与 Java 7 的兼容。
      2. 如果两个接口有相同签名的方法,而且只要有一个实现了默认方法,就必须在子类中覆盖: ```java interface Person { default String getName() { returun “”; } }

    interface Named { default String getName() { return getClass.getName() + “_” + hashCode(); } }

    class Student implements Person, Named { public String getName() { return Person.super.getName(); } . . . }

    1. 8. **p239**:`Cloneable` 接口怎么用。即使 `clone` 的默认(浅拷贝)实现能够满足要求,还是需要实现 `Cloneable` 接口,将 `clone` 重新定义为 `public` ,再调用 `super.clone()` :
    2. ```java
    3. class Employee implements Cloneable
    4. {
    5. public Employee clone() throws CloneNotSupportedException
    6. {
    7. return (Employee) super.clone();
    8. }
    9. }
    1. p240所有数组类型都有一个公共的 clone 方法。