jdk8和jdk9中接口的新特性

253 阅读2分钟

jdk8之前:声明抽象方法,修饰为public abstract。

jdk8:添加声明静态方法,默认方法。

jdk9:添加声明私有方法

jdk8:

①接口中声明的静态方法只能被接口来调用,不能使用其实现类进行调用

静态方法的声明:

public static void method1()//public可以省略

{

    System.out.println("这是静态方法");

}

②接口中声明的默认方法可以被实现类继承,实现类在没有实现此方法的情况下,默认调用接口中声明的默认方法。如果重写了此方法,则调用的是重写后的方法。

默认方法的声明:

public default void method2()//public可以省略

{

    System.out.println("这是默认方法");

}

③如果类实现了两个接口,而两个方法中定义了同名同参数列表的默认方法。则实现类在没有重写此两个接口默认方法的情况下,会接口冲突。要求:此时实现类必须要重写接口中定义的同名同参数的方法。

④子类(或实现类)继承了父类并实现了接口。父类和接口中声明了同名同参数的方法。(其中,接口中的方法是默认方法).默认情况下,子类(实现类)在没有重写此方法的情况下,调用的是父类中的方法。----类优先原则

⑤如何在子类(实现类)中调用父类或接口中被重写的方法

method3();//调用自己类中的方法,省略了this.

super.method3();//调用父类中的方法

CompareA.super.method3();//调用接口CompareA中的默认方法

CompareB.super.method3();//调用接口CompareB中的默认方法

jdk9:

私有方法的声明:

private void method5()

{

    System.out.println("这是接口中定义的私有方法");

}

接口中私有方法的用途,供接口中其他的默认方法调用。