【java8新特性】默认方法

欢迎交流java8新特性系列文章://www.greatytc.com/nb/27231419 . [1][2][3][4][5]

一、简介

     默认方法是指接口的默认方法,它是java8的新特性之一。顾名思义,默认方法就是接口提供一个默认实现,且不强制实现类去覆写的方法。默认方法用default关键字来修饰。

     默认方法可以解决的痛点
     在java8之前,修改接口功能通常会给接口添加新的方法,这时对已经实现该接口的所有实现类,都要一一添加对新方法的实现,换言之,在给接口定义新方法的同时无法不影响到已有的实现类,这时,java8的默认方法特性就可以解决这种接口修改与已有实现类不兼容的问题,比如java8中Iterable接口添加的forEach方法就是一个默认方法:

    default void forEach(Consumer<? super T> action) {
        Objects.requireNonNull(action);
        for (T t : this) {
            action.accept(t);
        }
    }

这样在java8中,可以对集合直接用forEach方法结合lambda表达式方便的实现集合的遍历计算。

二、默认方法的使用

2.1 实现多个接口有相同默认方法的解决

     注意:当一个类实现多个接口时,若多个接口中存在相同默认方法(方法名、参数、返回值相同),此时实现类必须要覆写默认方法

     覆写有两种方式:

  • 1、实现类自己实现方法逻辑
  • 2、采用super关键字来调用指定接口的默认方法, 如:
public interface TestInterface1
{
    default void test()
    {
        System.out.println("TestInterface1");
    }   
}

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

public class Test implements TestInterface1, TestInterface2
{
    @Override
    public void test()
    {
        // 调用TestInterface1接口的默认test()方法
        TestInterface1.super.test();
    }
}
2.2 接口静态方法

     java8支持接口中定义静态方法(需要提供默认实现),写法上将默认方法的default关键字换成static关键字即可。

三、总结

     java8默认方法的使用还是比较简单的,且解决了java8之前给接口定义新方法的同时无法不影响到已有的实现类的痛点问题,比较实用。


  1. 【java8新特性】lambda表达式与函数式接口详解

  2. 【java8新特性】Stream API详解

  3. 【java8新特性】Optional详解

  4. 【java8新特性】方法引用

  5. 【java8新特性】默认方法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Java 8自Java 5(发行于2004)以来最具革命性的版本。Java 8 为Java语言、编译器、类库、开发...
    huoyl0410阅读 672评论 1 2
  • 前言:Java 8 已经发布很久了,很多报道表明Java 8 是一次重大的版本升级。在Java Code Geek...
    糖宝_阅读 1,328评论 1 1
  • No one can tell me how to solve problems ,I only just lea...
    Nancy随笔阅读 472评论 0 0
  • 感恩赵福老师! 先保护孩子的心 1, 孩子在成长中,他的心是比较脆弱的,需要我们时时呵护和滋养。 让孩子...
    为_福慧阅读 270评论 0 0