JDK1.8的接口引入了 static 和 default 方法。static相当于public static修饰,和常规的用法一样,直接通过{类名.方法名}调用。而default方法只有public修饰,必须由接口的实现类来调用。
之所以引入 default ,主要是为了接口的升级。在以往开发中,接口只要增加了方法,所有实现类必须实现该方法,否则编译不通过。而default修饰的接口方法,实现类可以不做任何实现,默认调用接口的default方法。
定义接口:
public interface MyService { static void StaticMethod(){ System.out.println("Call StaticMethod"); } default void DefaultMethod(){ System.out.println("Call DefaultMethod"); } }定义实现类,没有任何代码:
public class MyServiceImpl implements MyService { }测试:
public class app { public static void main(String[] args) { MyService myService = new MyServiceImpl(); myService.DefaultMethod(); } }输出如下:
Call DefaultMethod定义实现类,重写了DefaultMethod:
public class MyServiceImpl2 implements MyService { @Override public void DefaultMethod() { System.out.println("Call MyServiceImpl2.DefaultMethod"); } }测试:
public class app { public static void main(String[] args) { MyService myService = new MyServiceImpl(); MyService myService2 = new MyServiceImpl2(); myService.DefaultMethod(); myService2.DefaultMethod(); } }输出如下:
Call DefaultMethod Call MyServiceImpl2.DefaultMethod