java8新特性:接口的默认方法与静态方法

接口中一共可以定义三种方法:

  1、抽象方法,也就是需要实现者必须实现的方法,最常见的那种

  2、默认方法,不需要实现者实现

  3、静态方法,不需要实现者实现

默认方法:

  允许在已有的接口中添加新方法,而同时又保持了与旧版本代码的兼容性,默认方法与抽象方法不同之处在于抽象方法必须要求实现,但是默认方法则没有要求实现,相反,每个接口都必须提供一个默认实现,这样所有的接口实现者将会默认继承他(如果有必要的话,可以覆盖这个默认实现)

静态方法:

  允许在已有的接口中添加静态方法,接口的静态方法属于接口本身,不被继承,也需要提供方法的实现。

默认方法和静态方法的访问:

  接口的静态方法:直接用接口的类型.方法名。

  接口的默认方法:得到接口的实现类对象,直接用对象的引用.方法名。默认方法可以被实现类覆盖。

下面上实例:

/**
 * 测试接口
 */
public interface IFunctional {

    //定义一个抽象方法,要求被实现着实现
    void method(String from);

    //定义一个默认方法,不要求被实现
    default void defaultMethod(){
        System.out.println("接口的默认方法");
    }

    //定义一个静态方法,不要求被实现
    static void staticMethod(){
        System.out.println("接口静态方法的默认实现");
    }
}
继承类
**
* 测试实现类 */ public class Main implements IFunctional { @Override public void method(String from) { System.out.println("子类实现的接口抽象方法..."); } public static void main(String[] args) { Main main = new Main(); //访问接口的默认方法 main.defaultMethod(); //访问接口的静态方法:直接用接口的类型.方法名 IFunctional.staticMethod(); } }