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 }

  • 相关阅读:
    POJ3233]Matrix Power Series && [HDU1588]Gauss Fibonacci
    [codeforces 508E]Maximum Matching
    [SDOI2011]染色
    [CSU1806]Toll
    [HDU4969]Just a Joke
    [HDU1071]The area
    [HDU1724]Ellipse
    [VIJOS1889]天真的因数分解
    [BZOJ3379] Turning in Homework
    [BZOJ1572] WorkScheduling
  • 原文地址:https://www.cnblogs.com/jiaqingshareing/p/9313190.html
Copyright © 2011-2022 走看看