JDK8中接口的新特性

在JDK8环境中,接口中的方法不再是只能有抽象方法,还可以有静态方法和default方法。实现类只需要实现它的抽象方法即可,JDK8中的接口有愈发向抽象类靠拢的感觉。

关于静态方法和默认方法作如下简述:

1、静态方法:public static 方法名 [throws异常列表]

在接口中直接由接口名调用,不需要由接口的实现类对象来调用。

2、default方法:public default void defaultMethod(){}【default不能省略】

由于Java中是单继承的,但接口可以同时实现多个。所以,若2个接口存在同名,同参数的默认方法,将无法识别到底调用的是哪个接口的方法,此时必须在实现类中显式重写default方法,而关于default的方法的重写,我们在实现类中不需要继续出现default关键字也不能出现default关键字

注意:重写default方法的访问权限必须是public子类重写接口默认方法时必须去掉default。因为default方法除了没有显式的访问修饰符外,只能用public访问限定符来修饰,而在Java中重写一个方法,访问限定符一定要大于父类或者接口指定的访问限定符范围,而且方法声明处抛出异常也要大于后者。所以访问权限必须是public。

@Override

public void defaultMethod(){}

/**
 * JDK8中接口新特性
 */
public interface TestJDK8NewInterface {
  /**
   * 静态方法
   */
  static void staticMethod(){
    System.out.println("staticMethod");
  }
  /**
   * 默认方法
   */
  default void defaultMethod(){
    System.out.println("defaultMethod");
  }
}