Java8新特性——接口默認方法

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

簡單說,默認方法就是接口能夠有實現方法,並且不須要實現類去實現其方法。編程

咱們只需在方法名前面加個default關鍵字便可實現默認方法。框架

爲何要有這個特性?ide

首先,以前的接口是個雙刃劍,好處是面向抽象而不是面向具體編程,缺陷是,當須要修改接口時候,須要修改所有實現該接口的類,目前的java 8以前的集合框架沒有foreach方法,一般能想到的解決辦法是在JDK裏給相關的接口添加新的方法及實現。然而,對於已經發布的版本,是無法在給接口添加新方法的同時不影響已有的實現。因此引進的默認方法。他們的目的是爲了解決接口的修改與現有的實現不兼容的問題。spa

實例演示:3d

 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 }

相關文章
相關標籤/搜索