接口的默认方法和静态方法
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 {@Overridepublic void show() {System.out.println("我是实现方法");}//默认方法支持重写,不覆盖则执行接口的默认方法@Overridepublic void showA() {System.out.println("我覆盖了接口的默认方法");}//静态方法不可以重写}
测试:
public class Test {public static void main(String[] args) {MyClass myClass = new MyClass();myClass.show();myClass.showA();//通过类名.方法名调用接口静态方法MyInterface.showB();}}
