jdk8接口新增方法

2021-02-23  本文已影响0人  牧心musing

在jdk8之前,接口中只有抽象方法。

1、接口引入默认方法

1.1 原因

一个接口如Map,其有几十个接口的实现。
如果有一天,我们需要为Map接口添加一个抽象方法,那么我们所有的实现类都需要去实现这个方法,其工程量十分巨大。
为此,在JDK8中,为接口新增了默认方法。

接口中的默认方法,实现类不必重写,可以直接使用,实现类也可以根据需要重写。这就方便了接口的拓展。

格式:在默认方法前面加上default修饰

interface A{
    public default void test(){
        System.out.println("interface aa");
    }
}

1.2 使用方法

  1. 实现类直接使用


    image.png
  2. 实现类重写默认方法


    image.png

2、接口引入静态方法

目的:方便接口扩展

格式:在默认方法前面加上static修饰

interface A{
    public static void test(){
        System.out.println("interface aa");
    }
}

使用方法

public class Demo02StaticFunction {
    public static void main(String[] args){
        E e = new E();
//        e.test() 实现类无法直接调用静态方法
        // 通过接口直接调用
        D.test();

    }
}

interface D{
    public static void test(){
        System.out.println("D static function");
    }
}

class E implements D{

}

3. 接口默认方法和静态方法的区别

1、默认方法通过实例调用,静态方法通过接口名调用
2、默认方法可以被继承,实现类可以直接使用接口默认方法,也可以重写默认方法
3、静态方法不能被继承,实现类不能重写接口静态方法,只能使用接口名调用。

如果某个方法需要被实现类继承或重写,则使用默认方法,如果不需要继承就是用静态方法。

上一篇下一篇

猜你喜欢

热点阅读