接口的默认方法和静态方法
jdk8之前,interface方法不能有实现,但是从Java 8开始,接口被增强为具有实现方法。我们可以使用default和static关键字来创建具有方法实现的接口。例如Iterable接口中的forEach方法实现是:
default void forEach(Consumer<? super Taction) {
Objects.requireNonNull(action);
for (T t : this) {
action.accept(t);
}
}
示例代码
创建一个接口:
public interface MyInterface {
void show();
default void showA() {
System.out.println("我是接口默认方法");
}
static void showB() {
System.out.println("我是接口静态方法");
}
}
创建该接口实现类:
public class MyClass implements MyInterface {
@Override
public void show() {
System.out.println("我是实现方法");
}
//默认方法支持重写,不覆盖则执行接口的默认方法
@Override
public void showA() {
System.out.println("我覆盖了接口的默认方法");
}
//静态方法不可以重写
}
测试:
public class Test {
public static void main(String[] args) {
MyClass myClass = new MyClass();
myClass.show();
myClass.showA();
//通过类名.方法名调用接口静态方法
MyInterface.showB();
}
}