1.接口裏也可以寫方法體了,實現該接口的類不再強制實現該方法,只需要在方法簽名增加default簽名並實現方法體.
2.接口可以定義靜態方法,通過接口調用。實現類不需實現,也無法在實現類中直接調用(需要使用接口名稱直接調用)。
public interface Java8Interface {
/**
* 默認方法
*/
default int add(int a,int b) {
return a+b;
}
/**
* 靜態方法
*/
static int sub(int a,int b) {
return a - b;
}
String call(String message);
}
調用方式如下所示,是不是比之前方便很多了!(暫不考慮繼承導致的歧義)
public class Java8InterfaceImpl implements Java8Interface {
@Override
public String call(String message) {
return "hell : "+message;
}
public static void main(String[] args) {
Java8InterfaceImpl model = new Java8InterfaceImpl();
System.out.println(model.call("java8")); // 調用實現的接口方法
System.out.println(model.add(1,2)); // 調用接口默認的實現方法
System.out.println(Java8Interface.sub(10,8)); // 調用接口靜態的實現方法
}
}