一.简述
在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