接口中的默认方法

标签: java
12人阅读 评论(0) 收藏 举报
分类:

java8在接口中引入了默认方法,通过在方法前加上default关键字就可以在接口中写方法的默认实现

在java8中我们可以用集合的stream方法对集合进行函数式处理,这个方法在java8之前是没有的,那么它是如何对该接口进行增强并且不影响之前的实现类的呢?

在Collection类中可以看到

    /**
     * Returns a sequential {@code Stream} with this collection as its source.
     *
     * <p>This method should be overridden when the {@link #spliterator()}
     * method cannot return a spliterator that is {@code IMMUTABLE},
     * {@code CONCURRENT}, or <em>late-binding</em>. (See {@link #spliterator()}
     * for details.)
     *
     * @implSpec
     * The default implementation creates a sequential {@code Stream} from the
     * collection's {@code Spliterator}.
     *
     * @return a sequential {@code Stream} over the elements in this collection
     * @since 1.8
     */
    default Stream<E> stream() {
        return StreamSupport.stream(spliterator(), false);
    }

在stream()方法中添加了default关键字,有了默认发放的引入后就可以对现有的接口进行增强了,如以上的代码,调用StreamSupport的stream方法返回了一个stream对象,这使得我们不需要在接口中增加方法后对已经存在的每个实现类进行实现该方法,做到了平滑的增强。

继承及实现中包含相同的方法时:

  • 当继承的父类和实现的接口中有相同签名的方法时,优先使用父类的方法。
  • 当接口的父接口中也有同样的默认方法时,就近原则调用子接口的方法。
  • 当实现的多个接口中有相同签名的方法时,必须在实现类中通过重写方法解决冲突问题,否者无法通过编译,在重写的方法中可以通过 接口名.super.方法名(); 的方式显示调用需要的方法。

想一起交流或者有问题的朋友可以关注我的公众号,里面有群聊连接可以一起交流遇到的问题,如果失效可以后台回复我,每天会同步更新
博客连接 : AshinLee’s blog

公众号:
这里写图片描述

查看评论

Java 8 接口里的默认方法特性

这篇文章我们将要探讨Java8中接口里的默认方法特性。Java8指出“默认方法使得新功能被添加到库中的接口里面,同时又能保证与这些接口老版本代码的二进制兼容性。” 这些年Java进化升级了很多,...
  • yin767833376
  • yin767833376
  • 2016-08-04 17:54:14
  • 1236

关于java8接口中默认方法的使用

java8在接口中引入了默认方法,通过在方法前加上default关键字就可以在接口中写方法的默认实现,有点类似于C++中的多继承,但是当多个接口或父类中有相同签名的方法时,会引发一些问题,经过实验得出...
  • travellersY
  • travellersY
  • 2017-07-06 13:39:31
  • 669

Java8中使用默认方法实现多重继承的测试

测试内容:当一个类从超类和接口继承相同的方法时会发生什么?一个超类MyClass:package insping; public class MyClass { public String g...
  • hspingcc
  • hspingcc
  • 2017-06-16 16:23:23
  • 464

6.接口中的默认方法和静态方法

接口中的默认方法和静态方法 基于尚硅谷java8教程 1. 接口中的方法从接触java编程的第一天起,老师就告诉我们接口中的变量必须是public static final的,方法也必须是publ...
  • seven_zhao
  • seven_zhao
  • 2017-03-27 18:30:41
  • 484

Java8新特性整理之接口的默认方法(五)

默认方法 默认方法由default修饰符修饰,并像类中声明的其他方法一样包含方法体。 比如,你可以像下面这样在集合库中定义一个名为 Sized的接口,在其中定义一个抽象方法size,以及一个默认...
  • u011726984
  • u011726984
  • 2018-02-11 09:14:58
  • 78

JDK8新特性:接口的静态方法和默认方法

在jdk8之前,interface之中可以定义变量和方法,变量必须是public、static、final的,方法必须是public、abstract的。JDK8及以后,允许我们在接口中定义stati...
  • aitangyong
  • aitangyong
  • 2017-01-06 10:46:53
  • 8623

Java8中接口的默认方法

一.简述在JDK 8之前,一个接口不能包含任何实现。接口只包含常量和方法签名。 从JDK 8开始,可以定义接口中方法的默认实现。这些方法称为默认方法。使用关键字"default"声明一个默认方法,它包...
  • hspingcc
  • hspingcc
  • 2017-06-16 16:14:09
  • 464

Java 8 之接口中的默认方法与静态方法

在 Java 8 中,接口引入了一些新的语言特性:默认方法(Default Methods)以及静态方法(Static Methods)。本篇文章就来了解下这两个特性。...
  • Airsaid
  • Airsaid
  • 2016-03-30 17:30:55
  • 1273

接口中的默认方法也是默认为public的吗??

。。。。
  • qq_39632912
  • qq_39632912
  • 2018-01-10 14:59:08
  • 210

接口的默认方法和静态方法

默认方法和静态方法 对比抽象类 默认方法和静态方法 JDK8 以后接口可以有方法体。 默认方法 default : 可以通过实现接口的类实例化的对象来调用,也可以被重写...
  • qq_40369829
  • qq_40369829
  • 2018-02-23 18:11:15
  • 14
    个人资料
    持之以恒
    等级:
    访问量: 4万+
    积分: 1017
    排名: 5万+
    最新评论