一.簡述
在JDK 8之前,一個接口不能包含任何實現。接口只包含常量和方法簽名。
從JDK 8開始,可以定義接口中方法的默認實現。這些方法稱爲默認方法。
使用關鍵字"default"聲明一個默認方法,它包含一個方法體。
所有實現類接口的默認方法都可用。如果實現類想要使用它,它可以使用它,或者它可以忽略默認實現並創建自己的實現。
即使接口現在可以定義默認方法,如果要創建實例,接口仍然必須由類實現。
二.實現和測試
接口示例:
package insping;
public interface MyInterface {
int add(int x, int y);
// 默認方法
default int multiply(int x, int y) {
return x * y;
}
}
上述接口聲明一個抽象方法add()和一個默認方法multiply()。
接着我們來創建一個實現這個接口的類。請注意,實現類只需要實現抽象方法。默認方法可以按原樣使用,除非實現類要更改行爲。
package insping;
public class MyClass implements MyInterface {
@Override
public int add(int x, int y) {
return x+y;
}
}
上面的MyClass類實現了MyIF接口,並提供了add()方法的實現。
現在,如果我們創建一個MyClass的實例並調用multiply()方法,則將使用默認方法實現.
測試示例:
package insping;
public class Test {
public static void main(String[] args) {
MyInterface intRef = new MyClass();
System.out.println("和 = " + intRef.add(5, 10));
System.out.println("乘 = " + intRef.multiply(5, 10));
}
}
結果:
和 = 15
乘 = 50