Java进阶:default方法说明

it2023-02-03  47

1. 概述

JDK1.8的接口引入了 static 和 default 方法。static相当于public static修饰,和常规的用法一样,直接通过{类名.方法名}调用。而default方法只有public修饰,必须由接口的实现类来调用。

2. default 的作用

之所以引入 default ,主要是为了接口的升级。在以往开发中,接口只要增加了方法,所有实现类必须实现该方法,否则编译不通过。而default修饰的接口方法,实现类可以不做任何实现,默认调用接口的default方法。

3. 示例:实现类不实现接口方法

定义接口:

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

4. 示例:实现类重写接口方法

定义实现类,重写了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
最新回复(0)