美文网首页Java Web架构设计IT技术篇Java高级技术
JDK8新特性之接口默认方法与静态方法

JDK8新特性之接口默认方法与静态方法

作者: Java技术栈 | 来源:发表于2017-10-05 08:05 被阅读47次

接口默认方法与静态方法

有这样一些场景,如果一个接口要添加一个方法,那所有的接口实现类都要去实现,而某些实现类根本就不需要实现这个方法也要写一个空实现,所以接口默认方法就是为了解决这个问题。

接口静态方法类似于默认方法,但是我们不能在实现类中覆盖它们,可以避免默认方法在实现类中被覆盖实现。

之前讲过的JDK8的list.foreache方法,看下源码,其实也是java.lang.Iterable接口的默认方法。

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

简单的例子

默认方法以default修饰,静态方法用static

public static void main(String[] args) {
    IUserInterface userInterface = new UserServiceImpl();
    System.out.println(userInterface.getDefaultUser1());
    System.out.println(IUserInterface.getDefaultUser2());
}

interface IUserInterface {

    default User getDefaultUser1() {
        return new User("Susan1", 11);
    }

    static User getDefaultUser2() {
        return new User("Susan2", 22);
    }

}

static class UserServiceImpl implements IUserInterface {

}

注意要点

1、接口默认方法、静态方法可以有多个。

2、默认方法通过实例调用,静态方法通过接口名调用。

3、default默认方法关键字只能用在接口中。

4、默认方法可以被继承,如果继承了多个接口,多个接口都定义了多个同样的默认方法,实现类需要重写默认方法不然会报错。

5、静态方法不能被继承及覆盖,所以只被具体所在的接口调用。

推荐阅读

什么是Spring Boot?
Spring Boot开启的2种方式
Spring Boot Starters启动器
Spring Boot定制启动图案
Spring Boot核心配置
Spring Boot功能实战
Spring Boot自动配置原理、实战
Spring Boot Runner启动器
Spring Boot - Profile不同环境配置

看完有没有收获?分享到朋友圈给更多的人吧。

相关文章

  • 接口的变化

    1、JDK8之后对接口做了增加,接口中可以有默认方法和静态方法 2、接口中默认方法的语法规则 3、接口中静态方法的...

  • Java自学-接口与继承 默认方法

    默认方法 步骤 1 : 什么是默认方法 默认方法是JDK8新特性,指的是接口也可以提供具体方法了,而不像以前,只能...

  • JDK8新特性之接口默认方法与静态方法

    接口默认方法与静态方法 有这样一些场景,如果一个接口要添加一个方法,那所有的接口实现类都要去实现,而某些实现类根本...

  • Java8特性之接口

    JDK1.8的特性 接口的特性 接口中可以定义静态方法,默认方法,并有方法体接口中定义的静态方法,只能通过接口去调...

  • Java 8新特性

    1、接口的默认方法和静态方法 Java 8在接口方面引入了新特性。Java 8版之前,接口只有抽象方法,而在Jav...

  • Java8新特性

    一,java语言新特性 1,Lamba表达式和函数式接口 2,接口的默认方法和静态方法。 3,方法引用。 4,重复...

  • Java8 新特性与 lambda 表达式笔记

    java8 的接口新特性 先看看下面的接口的默认方法和静态方法,感受一下: 默认实现方法 如果多继承状态下有默认方...

  • JDK8接口新特性:默认方法

    默认方法 在jdk8中关于接口新增一个特性,就是interface可以有默认方法。例如定义一个Named接口: 假...

  • JDK1.8 新特性

    JDK1.8 新特性 Lambda表达式函数式接口*方法引用和构造器调用Stream API接口中的默认方法和静态...

  • Java 8 之默认方法和静态接口方法

    转载自30分钟入门Java8之默认方法和静态接口方法 默认方法 默认方法让我们能给我们的软件库的接口增加新的方法,...

网友评论

    本文标题:JDK8新特性之接口默认方法与静态方法

    本文链接:https://www.haomeiwen.com/subject/yaggextx.html