JAVA9都要出來了,JAVA8新特性都沒搞清楚,是否是有點掉隊哦~java
接口定義加強編程
在JDK1.8之前,接口是定義的:編程語言
接口(英文:Interface),在JAVA編程語言中是一個抽象類型,是抽象方法的集合,接口一般以interface來聲明。一個類經過繼承接口的方式,從而來繼承接口的抽象方法。ide
在JDK1.8以前,接口有以下特性:spa
而如今,JDK1.8,打破常規,加強接口定義:code
容許在接口中定義普通方法,用default或static關鍵字修飾。固然,用這兩個關鍵字定義也有些許不一樣。對象
用default關鍵字定義方法:在接口中使用default關鍵字定義方法,須要添加方法體,default見名思意就是說,爲這個方法提供一個默認寫好的方法體實現。固然,在子接口中也能夠繼續去覆寫它。blog
1 interface MyInterface{ 2 void Method();//接口中原始定義方法的方式 3 4 default void dMethod() { 5 System.out.println("default 定義的方法!"); 6 } 7 } 8 class InterfaceImpl implements MyInterface{ 9 10 @Override 11 public void Method() {//沒用default關鍵字定義的方法,實現接口,就必需要覆寫接口中的方法 12 System.out.println("Hello World!"); 13 } 14 15 // @Override 16 // public void dMethod() { 17 // System.out.println("固然,也能夠去覆寫dMethod!"); 18 // } 19 } 20 public class Main { 21 public static void main(String[] args){ 22 InterfaceImpl anInterface = new InterfaceImpl(); 23 anInterface.Method(); 24 anInterface.dMethod();//調用default方法,輸出:"default 定義的方法!" 25 } 26 }
用Static關鍵字定義方法:咱們知道,在java中,使用static關鍵字修飾的方法叫作靜態方法,它不依賴於某個對象就能夠訪問。在接口中定義static方法也是如此,能夠經過接口名直接調用。繼承
1 interface MyInterface1{ 2 3 static void sMethod() { 4 System.out.println("static 定義的方法!"); 5 } 6 } 7 public class Main1 { 8 public static void main(String[] args){ 9 MyInterface1.sMethod();//直接由接口名調用static方法。 10 } 11 }
總之,接口裏面使用default和static定義方法的意義是避免子類重複實現一樣的代碼。 接口