Java 8 新增了接口的默認方法。java
簡單說,默認方法就是接口能夠有實現方法,並且不須要實現類去實現其方法。編程
咱們只需在方法名前面加個default關鍵字便可實現默認方法。框架
爲何要有這個特性?ide
首先,以前的接口是個雙刃劍,好處是面向抽象而不是面向具體編程,缺陷是,當須要修改接口時候,須要修改所有實現該接口的類,目前的java 8以前的集合框架沒有foreach方法,一般能想到的解決辦法是在JDK裏給相關的接口添加新的方法及實現。然而,對於已經發布的版本,是無法在給接口添加新方法的同時不影響已有的實現。因此引進的默認方法。他們的目的是爲了解決接口的修改與現有的實現不兼容的問題。spa
實例演示:code
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 }