美文网首页
Java8新特性一:默认方法

Java8新特性一:默认方法

作者: zztigyk | 来源:发表于2021-09-07 20:29 被阅读0次

1. 默认方法

1.1 语法

  默认方法就是一个在接口里面有了可以实现的方法。在jdk8之前,interface之中可以定义变量和方法,变量必须是public、static、final的,方法必须是public、abstract的,这些修饰符都是默认的。public 抽象方法需要子类实现。在JDK 1.8开始 支持使用static和default 修饰 可以写方法体,不需要子类重写。

1.2 实例

public class Java8Tester {
    public static void main(String args[]) {
        Vehicle vehicle = new Car();
        vehicle.print();
    }
}
 
interface Vehicle {
     /**
     * 默认方法 可以写方法体
     */
    default void print() {
        System.out.println("我是一辆车!");
    }
    /**
     * 静态方法 可以写方法体
     */
    static void blowHorn() {
        System.out.println("按喇叭!!!");
    }
}
 
interface FourWheeler {
     /**
     * 默认方法 可以写方法体
     */
    default void print() {
        System.out.println("我是一辆四轮车!");
    }
}
 
class Car implements Vehicle, FourWheeler {
     /**
     * 默认和静态方法不是我们的抽象方法 ,所以不需要重写
     */
    public void print() {
        Vehicle.super.print();
        FourWheeler.super.print();
        Vehicle.blowHorn();
        System.out.println("我是一辆汽车!");
    }
}

执行以上脚本,输出结果为:

我是一辆车!
我是一辆四轮车!
按喇叭!!!
我是一辆汽车!

1.3 多个默认方法

一个接口有默认方法,考虑这样的情况,一个类实现了多个接口,且这些接口有相同的默认方法,以下实例说明了这种情况的解决方法
第一个解决方案是创建自己的默认方法,来覆盖重写接口的默认方法:

public class Car implements vehicle, fourWheeler {
    @Override
    public void print() {
        System.out.println("我是一辆四轮汽车!");
    }
}

第二种解决方案可以使用 super 来调用指定接口的默认方法:

public class Car implements vehicle, fourWheeler {
    @Override
    public void print() {
        vehicle.super.print();
    }
}

相关文章

  • 1.Java8你需要了解的

    一、Java8新增了哪些新特性: 新特性Java8 新增了非常多的特性,我们主要讨论以下几个: 1、接口默认方法:...

  • java8 新特性总结

    java8新特性 1.接口方法默认实现:java8中接口方法可以有默认实现,需要加入default关键字。 2.L...

  • 默认方法

    默认方法 声明:java8新特性系列为个人学习笔记,参考地址点击这里,侵删!! Java 8 新增了接口的默认方法...

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

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

  • JAVA8新特性之默认方法

    默认方法的由来 我们都知道在java8新特性中对于接口也加入了一个新的改动,那就是默认方法了,那为什么要加入这个新...

  • Java8新特性一:默认方法

    1. 默认方法 1.1 语法   默认方法就是一个在接口里面有了可以实现的方法。在jdk8之前,interfac...

  • 【java8新特性】默认方法

    欢迎交流java8新特性系列文章:https://www.jianshu.com/nb/27231419 . [...

  • JAVA8新特性—默认方法

    函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口...

  • Java8特性之Lambda、方法引用和Streams

    Java8特性之Lambda、方法引用和Streams Java8已经推出了好一段时间了,而掌握Java8的新特性...

  • Java 8 新特性 - 函数式接口 Functional In

    Java8的其中一个新特性,函数式接口。 什么是函数式接口?有且仅有一个抽象方法的接口(不包括默认方法、静态方法以...

网友评论

      本文标题:Java8新特性一:默认方法

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