zoukankan      html  css  js  c++  java
  • Java8新特性——接口默认方法

    Java 8 新增了接口的默认方法。

    简单说,默认方法就是接口可以有实现方法,而且不需要实现类去实现其方法。

    我们只需在方法名前面加个default关键字即可实现默认方法。

    为什么要有这个特性?

    首先,之前的接口是个双刃剑,好处是面向抽象而不是面向具体编程,缺陷是,当需要修改接口时候,需要修改全部实现该接口的类,目前的java 8之前的集合框架没有foreach方法,通常能想到的解决办法是在JDK里给相关的接口添加新的方法及实现。然而,对于已经发布的版本,是没法在给接口添加新方法的同时不影响已有的实现。所以引进的默认方法。他们的目的是为了解决接口的修改与现有的实现不兼容的问题。

    实例演示:

     1 /**
     2  * @author jiaqing.xu@hand-china.com
     3  * @version 1.0
     4  * @name
     5  * @description
     6  * @date 2018/7/15
     7  */
     8 public interface Vehicle {
     9     //接口中默认方法
    10     default void print() {
    11         System.out.println("我是一辆车!");
    12     }
    13     //接口中静态方法
    14     static void blowHorn() {
    15         System.out.println("按喇叭!");
    16     }
    17 }
     1 /**
     2  * @author jiaqing.xu@hand-china.com
     3  * @version 1.0
     4  * @name
     5  * @description
     6  * @date 2018/7/15
     7  */
     8 public interface FourWheeler {
     9 
    10     default void print(){
    11         System.out.println("我是一辆四轮车!");
    12     }
    13 }
    /**
     * @author jiaqing.xu@hand-china.com
     * @version 1.0
     * @name
     * @description
     * @date 2018/7/15
     */
    public class Car implements FourWheeler,Vehicle{
        @Override
        public void print(){
            //我是一辆车!
            Vehicle.super.print();
            //我是一辆四轮车!
            FourWheeler.super.print();
            //按喇叭!
            Vehicle.blowHorn();
            //我是一辆Car汽车!
            System.out.println("我是一辆Car汽车!");
        }
    }
     1 /**
     2  * @author jiaqing.xu@hand-china.com
     3  * @version 1.0
     4  * @name
     5  * @description
     6  * @date 2018/7/15
     7  */
     8 public class Test4 {
     9     public static void main(String args[]) {
    10         //创建car的实例
    11         FourWheeler fourWheeler = new Car();
    12         //执行打印方法
    13         fourWheeler.print();
    14     }
    15 }

  • 相关阅读:
    16.10.16学到的JAVA知识
    参数类型转换求和(JAVA)
    大道至简第一篇读后感之愚公移山(伪代码)
    First
    18.10.22 luoguP3374 【模板】树状数组 1
    18.10.16 luoguP3372 线段树模板-区间更新值&求和(POJ3468 A Simple Problem with Integers)
    18.10.16 POJ 2528 Mayor's posters(线段树+离散化)
    18.10.15 POJ 2182 Lost Cows(线段树)
    18.10.10 数算作业-字符串
    18.10.9 不好做的最长上升子序列(nlogn树状数组解LIS)
  • 原文地址:https://www.cnblogs.com/jiaqingshareing/p/9313190.html
Copyright © 2011-2022 走看看