java8第二課:接口裡可以寫什麼
阿新 • • 發佈:2018-12-15
這節課我們來講講java8裡介面可以寫什麼,再次強調,這種語法只在jdk1.8以上有效。
public class Java8InterfaceTeach { public static void main(String[] args) { //這裡會報錯是因為這個接口裡沒有未實現的抽象方法 //要想使用lambda表示式,接口裡必須有且僅有一個未實現的抽象方法Java8Interface java8Interface = new Java8Interface() {}; System.out.println(java8Interface.add(1,2)); System.out.println(Java8Interface.add("12","21")); } } interface Java8Interface{/** * default方法: * java8裡允許在接口裡實現方法,不過要加default關鍵字,這樣的方法不算抽象方法,就和普通方法一樣 * 繼承該介面的介面或實現該介面的類可以不必重寫該方法,當然如果想要重寫也沒有問題 */ default int add(int i1, int i2) {return i1 + i2; } /** * 接口裡還可以寫靜態方法 */ static String add(String s1, String s2) { return s1 + s2; } } /** * 如果一個類實現了兩個介面,而這兩個介面中有方法名和引數表完全相同的預設實現方法(就是加了default的方法) * 那麼這個類必須重寫這個方法 */ class Test implements interface1,interface2{ @Override public int add(int i1, int i2) { return i1 + i2; } } interface interface1{ default int add(int i1, int i2) { return i1 + i2; } } interface interface2{ default int add(int i1, int i2) { return i1 + i2 + 1; } }