网站左侧分类菜单怎么做,dw做的网站能直接使用吗,海拉尔网站设计,杭州网络推广一、简介
默认方法是指接口的默认方法#xff0c;它是java8的新特性之一。顾名思义#xff0c;默认方法就是接口提供一个默认实现#xff0c;且不强制实现类去覆写的方法。默认方法用default关键字来修饰。
默认方法可以解决的痛点#xff1a; 在java8之前#xff0c;修…一、简介
默认方法是指接口的默认方法它是java8的新特性之一。顾名思义默认方法就是接口提供一个默认实现且不强制实现类去覆写的方法。默认方法用default关键字来修饰。
默认方法可以解决的痛点 在java8之前修改接口功能通常会给接口添加新的方法这时对已经实现该接口的所有实现类都要一一添加对新方法的实现换言之在给接口定义新方法的同时无法不影响到已有的实现类这时java8的默认方法特性就可以解决这种接口修改与已有实现类不兼容的问题比如java8中Iterable接口添加的forEach方法就是一个默认方法 default void forEach(Consumer? super T action) {Objects.requireNonNull(action);for (T t : this) {action.accept(t);}}这样在java8中可以对集合直接用forEach方法结合lambda表达式方便的实现集合的遍历计算。
二、默认方法的使用
2.1 实现多个接口有相同默认方法的解决
注意当一个类实现多个接口时若多个接口中存在相同默认方法方法名、参数、返回值相同此时实现类必须要覆写默认方法。
覆写有两种方式
1、实现类自己实现方法逻辑2、采用super关键字来调用指定接口的默认方法 如
public interface TestInterface1
{default void test(){System.out.println(TestInterface1);}
}public interface TestInterface2
{default void test(){System.out.println(TestInterface2);}
}public class Test implements TestInterface1, TestInterface2
{Overridepublic void test(){// 调用TestInterface1接口的默认test()方法TestInterface1.super.test();}
}2.2 接口静态方法
java8支持接口中定义静态方法需要提供默认实现写法上将默认方法的default关键字换成static关键字即可。
三、总结
java8默认方法的使用还是比较简单的且解决了java8之前给接口定义新方法的同时无法不影响到已有的实现类的痛点问题比较实用。 【java8新特性】——lambda表达式与函数式接口详解一 【java8新特性】——Stream API详解二 【java8新特性】——Optional详解三 【java8新特性】——方法引用四 【java8新特性】——默认方法五